map-utils計算座標距離
阿新 • • 發佈:2018-12-08
const PI = 3.14159265358979324; // 圓周率 const R = 6367000; //6378.137; // 地球半徑 // 計算弧度 function rad(d) { return d * PI / 180.0; } /** * 計算座標距離,單位米 * @param {Object} coordsA 座標A * @param {Object} coordsB 座標B * @return {Number} s 兩點間距離 */ export function getDistance(coordsA, coordsB) { var radLngA = rad(coordsA.lng); var radLatA = rad(coordsA.lat); var radLngB = rad(coordsB.lng); var radLatB = rad(coordsB.lat); var a = radLatA - radLatB; // 緯度弧度差 var b = radLngA - radLngB; // 精度弧度差 var s = 2 * Math.asin( Math.sqrt( Math.pow(Math.sin(a / 2), 2) + Math.cos(radLatA) * Math.cos(radLatB) * Math.pow(Math.sin(b / 2), 2) ) ); s = s * R; s = Math.round(s * 10000) / 10000; return s; }