我想知道如何在我拿着手机四处走动时可视化指向某个坐标(纬度、经度)的箭头。
我计算了所需位置的俯仰和偏航。现在我想知道如何在移动时一直指向这个位置。
问候,
我想知道如何在我拿着手机四处走动时可视化指向某个坐标(纬度、经度)的箭头。
我计算了所需位置的俯仰和偏航。现在我想知道如何在移动时一直指向这个位置。
问候,
一般来说,您可以使用以下公式计算方位角(本地子午线与连接当前位置和从北方向测量的目标位置的大圆之间的角度):
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);
请注意,lat1
、long1
、lat2
和long2
都是bearing
弧度。该公式假设地球是完美的球形。另请参阅此页面。
要获得基于WSG84的更准确结果,您可以使用android.location.Location的bearingTo()
方法。
然后,您可以使用指南针并以计算出的方位角向南北线绘制箭头,或者您可以假设北方位于手机屏幕的顶部。如果您显示地图,则第二种方法很有意义,因为大多数人习惯于将北方放在顶部。