计算两个坐标点之间的距离
function calcDistance(lonA,latA,lonB,latB) {
var earthR = 6371000;
var x = Math.cos(latA * Math.PI / 180.) * Math.cos(latB * Math.PI / 180.) * Math.cos((lonA - lonB) * Math.PI / 180);
var y = Math.sin(latA * Math.PI / 180.) * Math.sin(latB * Math.PI / 180.);
var s = x + y;
if (s > 1) s = 1;
if (s < -1) s = -1;
var alpha = Math.acos(s);
var distance = alpha * earthR;
return distance;
}
使用
calcDistance(longitudeA,latitudeA,longitudeB,latitudeB);
计算两个坐标点连线的角度
计算角度前首先要把经纬度坐标转换成地图容器坐标
function calcAngle(start,end) {
var p_start = map.lngLatToContainer(start),
p_end = map.lngLatToContainer(end);
var diff_x = p_end.x - p_start.x,
diff_y = p_end.y - p_start.y;
return 360*Math.atan2(diff_y, diff_x)/(2*Math.PI)+90;
}
使用
var start = [longitudeA,latitudeA];
var end = [longitudeB,latitudeB];
calcAngle(start,end);