YZProjectCloud/yanzhu-ui-app/miniprogram/utils/location.js

35 lines
1.0 KiB
JavaScript

/**
* 计算两点间距离(单位:米)
* @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,
};