高德地图 JS 计算两点之间的直线距离
//计算距离,参数分别为第一点的经度,纬度;第二点的经度,纬度 - 默认单位km
function getMapDistance(lng1,lat1,lng2,lat2) {
var d1 = 0.01745329251994329;
var d2 = lng1;
var d3 = lat1;
var d4 = lng2;
var d5 = lat2;
d2 *= d1;
d3 *= d1;
d4 *= d1;
d5 *= d1;
var d6 = Math.sin(d2);
var d7 = Math.sin(d3);
var d8 = Math.cos(d2);
var d9 = Math.cos(d3);
var d10 = Math.sin(d4);
var d11 = Math.sin(d5);
var d12 = Math.cos(d4);
var d13 = Math.cos(d5);
var arrayOfDouble1 = [];
var arrayOfDouble2 = [];
arrayOfDouble1.push(d9 * d8);
arrayOfDouble1.push(d9 * d6);
arrayOfDouble1.push(d7);
arrayOfDouble2.push(d13 * d12);
arrayOfDouble2.push(d13 * d10);
arrayOfDouble2.push(d11);
var d14 = Math.sqrt((arrayOfDouble1[0] - arrayOfDouble2[0]) * (arrayOfDouble1[0] - arrayOfDouble2[0]) +
(arrayOfDouble1[1] - arrayOfDouble2[1]) * (arrayOfDouble1[1] - arrayOfDouble2[1]) +
(arrayOfDouble1[2] - arrayOfDouble2[2]) * (arrayOfDouble1[2] - arrayOfDouble2[2]));
var distance = (Math.asin(d14 / 2.0) * 12742001.579854401)/1000;
return distance.toFixed(1);
}例如:
getMapDistance(120.426623,36.160131,120.448665,36.133426); //3.6公里

地图上标尺测量,大差不错,可以接受