美好的一天。有人告诉我要制作一个应用程序,一旦相机距离目的地 100 米,它就会在相机表面显示一些徽标。我做到了,现在的问题是,如果我转回建筑物,徽标仍然会出现在 100 米外,并且相机无法猜测我是否面向正确的公司。所以我考虑了 android 中两个位置的方位和度数。这个想法是让我的位置和我的位置之间的角度目标位置,一旦角度达到 0.0,这意味着用户面向正确的位置,因此我可以显示它。但是使用 BearingTo 方法查看 LOCATION 类代码我无法真正理解它返回了什么。我的问题是如何实现这样的逻辑?bearingTo 是否给出了我应该将自己从当前位置旋转到目标位置以直面它的角度,或者它给出了某种不同的逻辑?如果是这样我应该使用什么?
问问题
1392 次
1 回答
1
该bearingTo()
方法只返回两个位置之间的方位(罗盘方向):您调用它的位置和您作为参数提供的位置。实际上,Location
对象中没有任何内容,也不LocationManager
知道您的设备方向,即相机指向的位置。
您需要使用指南针(磁力计和加速度计)来了解设备相对于地球表面的方向,即了解相机指向的位置。
因此,bearingTo()
您可以计算“正确方向”并使用指南针获得“当前方向”,然后您可以比较这两个方向,甚至告诉用户如果他/她应该指向某个特定的建筑物,该转向哪个方向。(只需正确处理 359.999 ... 0.000 度边界。)
获取指南针方向有点复杂,所以最好尝试找到一个很好的教程来学习。这是一个不错的实现。或者,您可以深入了解 Android 的传感器和一些矩阵计算并浏览Android 文档。
或者,您当然可以在 Stack Overflow 上搜索有关获取指南针航向的较早讨论,并找到例如从数学家那里截取的这段代码。
于 2016-04-20T19:33:06.027 回答