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

时间:2014-06-04 19:02:13

标签: ios google-maps geolocation gis google-maps-sdk-ios

我想计算谷歌地图上两条路径线之间的角度。我有线的终点的lat-long坐标。 请建议如果我可以使用其他信息来执行此操作,可以从Google地图中获取。

2 个答案:

答案 0 :(得分:4)

如果距离很小,您可以使用此方法。 距离越远,精度越低,赤道越远。 首先找到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);
}

答案 1 :(得分:0)

使用您拥有的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和360,0:diff = 0