您的当前位置:首页>全部文章>文章详情

php通过经纬度计算距离

发表于:2024-04-23 15:22:04浏览:145次TAG: #PHP #ThinkPHP

前言

在PHP中,计算经纬度之间的距离可以使用Haversine公式。Haversine公式是一种简化的计算地球上两点之间距离的方法,适用于短距离计算。该公式的原理是根据点与地球中心的夹角来计算距离。

php代码

if (!function_exists('distance')) {

    /**
     * 通过经纬度获取距离(米)
     * @param $lat1
     * @param $lon1
     * @param $lat2
     * @param $lon2
     * @return float
     */
    function distance($lat1, $lon1, $lat2, $lon2) {
        // 将角度转换为弧度
        $degToRad = M_PI / 180;

        // 地球平均半径(单位:米)
        $earthRadius = 6371000;

        // 将经纬度转换为弧度
        $lat1 *= $degToRad;
        $lon1 *= $degToRad;
        $lat2 *= $degToRad;
        $lon2 *= $degToRad;

        // Haversine公式计算距离
        $dLat = ($lat2 - $lat1);
        $dLon = ($lon2 - $lon1);
        $a = pow(sin($dLat/2), 2) + cos($lat1) * cos($lat2) * pow(sin($dLon/2), 2);
        $c = 2 * atan2(sqrt($a), sqrt(1-$a));
        $distance = $earthRadius * $c;

        return round($distance, 2); // 返回结果保留小数点后两位
    }
}