如何可视化指向某个坐标(纬度,经度),给定俯仰和偏航的箭头

时间:2012-01-02 11:38:11

标签: android math gps latitude-longitude bearing

我想知道如何可视化指向某个坐标(纬度,经度)的箭头 我正拿着手机走来走去。

我计算了所需位置的俯仰和偏航。现在我想知道如何在移动时指向这个位置。

此致

1 个答案:

答案 0 :(得分:2)

一般情况下,您可以使用以下公式计算方位角(当地子午线与连接当前位置和从北方方向测量的目标位置之间的大圆之间的角度):

double y = Math.sin(long2-long1)*Math.cos(lat2);
double x = Math.cos(lat1)*Math.sin(lat2) - Math.sin(lat1)*Math.cos(lat2)*Math.cos(long2-long1);
double bearing = Math.atan2(y, x);

请注意,lat1long1lat2long2bearing都是弧度。该公式假设完美的球形地球。另请参阅this page

要根据WSG84获得更准确的结果,您可以使用android.location.LocationbearingTo()方法。

然后你可以使用指南针并以计算出的方位角绘制箭头到南北线,或者你可以假设北方位于手机屏幕的顶部。如果你展示一张地图,第二种方法很有意义,因为大多数人习惯于将北方放在最顶层。