工作中偶尔会碰到,后端返回一个目标位置的经纬度(吐槽:怎么不直接返回一个距离回来,还要让前端来算,【差评、嫌弃】),然后让你计算用户当前位置与目标位置的距离。
话不多说,直接上代码:
/*** 根据经纬度获取两点之间的距离* @param {Object} location1 = { latitude, longitude } 位置1的经纬度* @param {Object} location2 = { latitude, longitude } 位置2的经纬度*/
export const getDistance = (location1, location2) => {let lat1 = location1.latitude || 0;let lng1 = location1.longitude || 0;let lat2 = location2.latitude || 0;let lng2 = location2.longitude || 0;let rad1 = lat1 * Math.PI / 180.0;let rad2 = lat2 * Math.PI / 180.0;let a = rad1 - rad2;let b = lng1 * Math.PI / 180.0 - lng2 * Math.PI / 180.0;let r = 6378137;let distance = r * 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(rad1) * Math.cos(rad2) * Math.pow(Math.sin(b / 2), 2)));// 返回 m(米)return Number(distance).toFixed(2);
}