是否有人有一种算法来确定从一个纬度/经度到另一纬度的方向(伪代码):
CalculateHeading( lat1, lon1, lat2, long2 ) returns string heading
航向为NW,SW,E等
基本上,我在地图上有两个点,并且要考虑到东50英里和北1英里只是东而不是东北,因此我对方向有了一个大致了解。
该站点具有基本算法:
// in javascript, not hard to translate... var y = Math.sin(dLon) * Math.cos(lat2); var x = Math.cos(lat1)*Math.sin(lat2) - Math.sin(lat1)*Math.cos(lat2)*Math.cos(dLon); var brng = Math.atan2(y, x).toDeg();
更新:有关完整的算法映射数学和Javascript,请参见此处
这将为您提供一个介于0到360之间的数字,这只是一个简单的查询即可:
var bearings = ["NE", "E", "SE", "S", "SW", "W", "NW", "N"]; var index = brng - 22.5; if (index < 0) index += 360; index = parseInt(index / 45); return(bearings[index]);
重要的是要注意,您的方位实际上随着您在地球上移动而发生变化。上面的算法向您显示了 初始 方位,但是如果您长途旅行,到达目的地时方位会明显不同(如果您只是短途旅行[<几百公里],则可能会赢得变化不足以引起关注)。