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