Skip to content

PHP创建经纬度距离计算函数

TIP

要计算两个地点之间的经纬度距离,可以使用 Haversine 公式。这个公式基于球面上两点之间的弧长来计算它们之间的距离,可以用于近似地计算地球表面上两点之间的距离。

代码示例

php
<?php
function distance($lat1, $lon1, $lat2, $lon2, $unit = 'km') {
    $theta = $lon1 - $lon2;
    $distance = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) +  cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta));
    $distance = acos($distance);
    $distance = rad2deg($distance);
    $distance = $distance * 60 * 1.1515; // 转换成英里
    if ($unit == 'km') {
        $distance = $distance * 1.609344; // 英里转换为千米
    }
    return number_format($distance, 2);
}
// 示例用法
$lat1 = 39.909622; // 第一个地点的纬度
$lon1 = 116.433158; // 第一个地点的经度
$lat2 = 39.908626; // 第二个地点的纬度
$lon2 = 116.490506; // 第二个地点的经度
$distance = distance($lat1, $lon1, $lat2, $lon2);
echo "距离: " . $distance . " km";//距离: 4.89 km
?>
  • 在这个例子中,distance() 函数接受四个参数:两个地点的纬度和经度。可选的第五个参数 unit 用于指定距离的单位,默认为千米('km'),也可以设置为英里('mi')。 函数首先计算两个地点之间的经度差(θ),然后根据 Haversine 公式计算两个地点之间的距离。最后根据指定的单位进行转换,并返回距离值。

上次更新于: