如何在 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 中查找您是不是面对某个位置?的主要内容,如果未能解决你的问题,请参考以下文章