如何计算谷歌地图上两条路径线之间的角度使用latlong坐标



我想计算谷歌地图上两条路径线之间的角度。我得到了直线端点的长宽坐标。请建议,如果有其他信息,我可以用它来做到这一点,可从谷歌地图

如果距离较小,则可以使用此方法。距离越远,离赤道越远,精度就越低。首先用查找computeHeading()

computeHeading(from:LatLng, to:LatLng) .返回从一个LatLng到另一个LatLng的标题。标题在[-180,180]范围内以顺时针方向表示。

function getBearings(){
    var spherical = google.maps.geometry.spherical; 
    var point1 = markers[0].getPosition();// latlng of point1
    var point2 = markers[1].getPosition();
    var point3 = markers[2].getPosition();
    var bearing1 = google.maps.geometry.spherical.computeHeading(point1,point2);
    var bearing2 = google.maps.geometry.spherical.computeHeading(point2,point3);
    var angle =getDifference(bearing1, bearing2);
    return angle;
}

你可以使用这个函数来计算轴承之间的角度。

function getDifference(a1, a2) {
    al = (a1>0) ? a1 : 360+a1;
    a2 = (a2>0) ? a2 : 360+a2;
    var angle = Math.abs(a1-a2)+180;
    if (angle > 180){
        angle = 360 - angle;
    }
   return   Math.abs(angle);
}

使用您拥有的API计算两个轴承。然后写一个函数angleDiff(angle1, angle2)

有两种可能的angleDiff类型:一种也返回负角度。而且只能产生正角。

用这些测试用例测试该功能:

angleDiff(350,10): diff = 20
10,350: diff = 20(或-20)

170, 190:diff = 20
190,170: diff 20(或-20)

0,360 and 360,0: diff = 0

最新更新