我想计算谷歌地图上两条路径线之间的角度。我得到了直线端点的长宽坐标。请建议,如果有其他信息,我可以用它来做到这一点,可从谷歌地图
如果距离较小,则可以使用此方法。距离越远,离赤道越远,精度就越低。首先用查找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