/** * 计算两点间距离(单位:米) * @param {number} lon1 - 第一个点的经度 * @param {number} lat1 - 第一个点的纬度 * @param {number} lon2 - 第二个点的经度 * @param {number} lat2 - 第二个点的纬度 * @returns {number} 两点间距离(米) */ function calculateDistance(lon1, lat1, lon2, lat2) { // 将角度转换为弧度 const radLat1 = (lat1 * Math.PI) / 180.0; const radLat2 = (lat2 * Math.PI) / 180.0; const deltaRadLat = radLat1 - radLat2; const deltaRadLon = ((lon1 - lon2) * Math.PI) / 180.0; // Haversine公式计算距离 const a = Math.sin(deltaRadLat / 2) * Math.sin(deltaRadLat / 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.sin(deltaRadLon / 2) * Math.sin(deltaRadLon / 2); const b = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); // 地球半径(米) const earthRadius = 6371000; const distance = earthRadius * b; return Math.round(distance); } module.exports = { calculateDistance: calculateDistance, };