如何在 Android 中查找您是不是面对某个位置?

Posted

技术标签:

【中文标题】如何在 Android 中查找您是不是面对某个位置?【英文标题】:How to find if you're facing a certain location in Android?如何在 Android 中查找您是否面对某个位置? 【发布时间】:2017-09-10 00:20:57 【问题描述】:

我在网上搜索过,但还没有找到类似的东西。基本上,有没有一种方法可以让我知道我是否面对某个位置。

例如,我在纬度和经度中有我当前的位置,我在纬度和经度中有第二个位置。现在我想知道当我转身时第二个位置在我正前方的时间。

【问题讨论】:

请阅读Under what circumstances may I add “urgent” or other similar phrases to my question, in order to obtain faster answers? - 总结是这不是解决志愿者的理想方式,并且可能会适得其反。请不要将此添加到您的问题中。 @halfer 我很抱歉。谢谢 【参考方案1】:

我将假设您的意思是手机“面向”感兴趣的位置,并且您已经知道哪个轴将确定这一点。我要做的是使用SensorManager.getOrientation(float\[\], float\[\]) 来获取您设备面向的弧度,然后将其转换为度数。

接下来,我将确保从设备(GPS,而不是网络)获得准确的当前点,并从设备调用Location.bearingTo(Location),以目标位置作为参数来获取它的度数。

最后,我会比较两个结果,并确定设备是否在一定范围内“面向”。这可能需要根据目的地与当前位置的距离进行调整,但我会尝试一下。

【讨论】:

非常感谢!不幸的是,我不知道哪个轴将决定这一点。你能启发我吗?非常感谢! 将此链接用作手机坐标系的参考 (developer.android.com/guide/topics/sensors/…)。例如,如果您希望手机背面朝向第二个位置,那就是负 Z 轴。 太棒了!是否可以使用简单的 if 语句进行比较? if (-zaxis == bearing)?非常感谢,我真的很感谢所有的帮助。我对这一切都很陌生,所以现在有点困惑,尤其是 Android 文档! 另外,我的Location.bearingTo(location) 总是返回一个类似-0.143435 的数字。我可以用Math.toDegrees(bearing) 把它变成度数吗?谢谢 第一个问题,可能不是。我会尝试找出一个范围来比较它。至于第二个问题,根据文档,那是在真北以东的度数。【参考方案2】:

如果您使用 Android 位置管理器,您可以预测您的方向/位置。看看这个example

【讨论】:

我已经能够获得当前位置。现在我有了第二个位置,我希望能够知道我何时面向第二个位置的方向【参考方案3】:

我不知道这是否有帮助,但您可以查看 Google 的 Places API:https://developers.google.com/maps/documentation/javascript/places#place_search_responses

响应有一个名为 viewport 的属性,通过一些处理可以帮助您

【讨论】:

感谢您的回复,但在这种情况下这对我没有帮助。

以上是关于如何在 Android 中查找您是不是面对某个位置?的主要内容,如果未能解决你的问题,请参考以下文章

js如何查找数组中是不是存在某个值

js如何查找数组中是不是存在某个值

js如何查找数组中是不是存在某个值

如何在 android profiler 中搜索某个方法?

android,检查gps位置是不是接近/接近某个位置

Android从定义的位置查找X点的纬度经度