获取从当前位置到目标位置的度数 Android

Get Degree From current location to the destination location Android

很好 day.I 被告知制作一个应用程序,一旦相机距离相机 100 米就会在相机表面显示一些徽标 destination.I 做到了,现在的问题是如果我向后转向建筑物,徽标仍将显示为我在 100 米外,并且相机无法猜测我是否面对正确的公司或 not.So 我考虑了 [= 中两个位置的方位和度数16=] 的想法是在我的位置和目标位置之间形成角度,一旦角度达到 0.0,就意味着用户面向正确的位置,这样我就可以显示 it.But 查看 LOCATION class 代码bearingTo 方法我无法真正理解它给出了什么 back.My 问题是我如何实现这样的逻辑?bearingTo 是否给出了我应该将自己从当前位置旋转到目标位置以笔直面对它的角度,或者它是给出某种不同的逻辑?如果是这样,我应该使用什么?

bearingTo() 方法只是 returns 两个位置之间的方位(罗盘方向):您调用它的位置和您作为参数给出的位置。实际上 Location 对象或 LocationManager 中的任何内容都不知道您的设备方向,即相机指向的位置。

您需要使用指南针(磁力计和加速度计)来了解设备相对于地球表面的方向,即了解相机指向的位置。

所以使用 bearingTo() 你可以计算出 "right direction" 并且使用指南针你可以得到 "current direction" 然后你可以比较这两个或者甚至告诉用户转向哪个方向he/she 应该指向某个特定的建筑物。 (只需正确处理 359.999 ... 0.000 度边界即可。)

获取罗盘航向有点复杂,因此最好尝试找到一个不错的教程来遵循。 Here's is one decent implementation. Or you can dig deeper into Android's sensors and some matrix calculations and plow through the Android documentation

或者您当然可以在 Stack Overflow 中搜索 older discussions about getting a compass heading and find for example this code snipped from a mathematician