根据两地经纬度,计算直线距离

// 哈弗辛公式计算两地距离 传参为两地经纬度
function calculateStraightLineDistance(lat1, lon1, lat2, lon2) {
    const earthRadius = 6371004; // 地球半径,单位米

    // 将度数转换为弧度
    function degreesToRadians(degrees) {
        return (degrees * Math.PI) / 180;
    }

    // 使用Haversine公式计算距离
    function haversine(lat1, lon1, lat2, lon2) {
        const dLat = degreesToRadians(lat2 - lat1);
        const dLon = degreesToRadians(lon2 - lon1);
        const a = Math.sin(dLat / 2) * Math.sin(dLat / 2) + Math.cos(degreesToRadians(lat1)) * Math.cos(degreesToRadians(lat2)) * Math.sin(dLon / 2) * Math.sin(dLon / 2);
        const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
        return earthRadius * c;
    }

    // 调用Haversine函数计算距离并返回
    return haversine(lat1, lon1, lat2, lon2);
}

哈弗辛公式在计算较短距离时非常精确,对于地球表面的绝大多数距离计算都适用。但在极长距离(如接近地球半周以上的距离)时,可能需要考虑地球的椭球形状和其他更复杂的地理计算方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值