Determine compass direction from one lat/lon to the other

前端 未结 3 1625
星月不相逢
星月不相逢 2020-12-21 12:25

Does anyone have an algorithm to determine the direction from one lat/lon to another (pseudo-code):

CalculateHeading( lat1, lon1, lat2, long2 ) returns stri         


        
3条回答
  •  半阙折子戏
    2020-12-21 12:39

    This site has the basic algorithm:

    // 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();
    

    UPDATED: See here for complete algorith Mapping Math and Javascript

    That'll give you a number between 0 and 360 then it's just a matter of having a simple lookup:

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

    It's important to note that your bearing actually changes as you move around the earth. The algorithm above shows you initial bearing, but if you're traveling a long distance, your bearing to be significantly different when you reach the destination (if you're only traveling a short distance [< a few hundred kms] then it probably won't change enough to be a concern).

提交回复
热议问题