JavaScript 计算坐标两点之间的距离
💡 注意
这里主要是使用Haversine公式(半正矢公式)
来计算,Haversine公式
可以根据两个点的经纬度计算出它们在地球表面的距离。使用这种方式计算的出来的距离,数值较小时可视为两点之间的直线距离(实际上是大圆距离)。
如果需要根据具体的路线来进行计算,可以考虑通过高德地图的 SDK 来完成。
/**
* 计算两个坐标点之间距离(单位KM)
* @param {object} point1 坐标点1
* @param {string} point1.longitude 经度
* @param {string} point1.latitude 纬度
* @param {object} point2 坐标点2
* @param {string} point2.longitude 经度
* @param {string} point2.latitude 纬度
*/
export function getDistance(point1, point2) {
// 将两个点的纬度转换为弧度
const radLat1 = (point1.latitude * Math.PI) / 180;
const radLat2 = (point2.latitude * Math.PI) / 180;
// 计算两个点的纬度差和经度差
const latDiff = radLat1 - radLat2;
const lngDiff = (point1.longitude * Math.PI) / 180 - (point2.longitude * Math.PI) / 180;
// 使用Haversine公式计算两点间的大圆距离
let distance =
2 *
Math.asin(
Math.sqrt(
Math.pow(Math.sin(latDiff / 2), 2) +
Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(lngDiff / 2), 2)
)
);
// 将距离乘以地球半径(千米)
distance = distance * 6378.137;
// 四舍五入到小数点后四位
distance = Math.round(distance * 10000) / 10000;
// 返回距离(千米)
return distance;
}