获取学位从当前位置到目标位置Android

时间:2016-04-20 18:49:02

标签: android location angle bearing

美好的一天。我被告知制作一个应用程序,一旦相机离目的地100米,就会在相机表面显示一些标志。我做了,现在的问题是,如果我向后转到建筑物,徽标仍然会出现在100米之外,相机无法猜测我是否面对正确的公司。所以我想到了android中两个位置的承载和度数。想法是有两个角度我的位置和目的地位置,一旦角度达到0.0,就意味着用户面对正确的位置,所以我可以展示它。但是用BearingTo方法查看LOCATION类代码我真的不明白它给了什么。我的问题是我怎样才能实现这样的逻辑?bearingTo给出的角度我应该将自己从当前位置旋转到目标位置直接面对它,或者它给出了某种不同的逻辑?如果是这样我应该使用什么?

1 个答案:

答案 0 :(得分:1)

bearingTo()方法只返回两个位置之间的方位(罗盘方向):您调用它的那个位置和您给出的位置作为参数。实际上,Location对象或LocationManager中没有任何内容可以了解您的设备方向,即相机指向的位置。

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

因此,使用bearingTo(),您可以计算出“正确的方向”,然后使用指南针获得“当前方向”,然后您可以将这两者进行比较,甚至可以告诉用户如果他/她是应该指向某个特定的建筑物。 (只需正确处理359.999 ... 0.000度边框。)

获取指南针标题有点复杂,所以最好尝试找一个很好的教程。 Here's is one decent implementation。或者你可以深入研究Android的传感器和一些矩阵计算,并通过the Android documentation进行耕作。

或者你当然可以搜索older discussions about getting a compass heading的Stack Overflow并找到例如this code snipped from a mathematician