一尘不染

确定从一个纬度/经度到另一纬度的罗盘方向

algorithm

是否有人有一种算法来确定从一个纬度/经度到另一纬度的方向(伪代码):

CalculateHeading( lat1, lon1, lat2, long2 ) returns string heading

航向为NW,SW,E等

基本上,我在地图上有两个点,并且要考虑到东50英里和北1英里只是东而不是东北,因此我对方向有了一个大致了解。


阅读 271

收藏
2020-07-28

共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]);

重要的是要注意,您的方位实际上随着您在地球上移动而发生变化。上面的算法向您显示了 初始
方位,但是如果您长途旅行,到达目的地时方位会明显不同(如果您只是短途旅行[<几百公里],则可能会赢得变化不足以引起关注)。

2020-07-28