高德地图 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公里

屏幕快照 2021-01-04 下午3.51.14

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