高德地图 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公里
地图上标尺测量,大差不错,可以接受