首页  >  文章  >  数据库  >  如何在 PHP 中使用纬度和经度计算半径内的距离?

如何在 PHP 中使用纬度和经度计算半径内的距离?

Barbara Streisand
Barbara Streisand原创
2024-10-30 18:40:03474浏览

How to Calculate Distances within a Radius Using Latitude and Longitude in PHP?

根据纬度和经度计算距离

在此场景中,您要确定以纬度和经度为中心 15 英里半径内的点用户输入的坐标。为此,您可以利用数学公式来计算距离。

考虑以下 PHP 函数:

<code class="php">function get_distance($latitude1, $longitude1, $latitude2, $longitude2, $unit = 'Mi') { 

    // Calculate the angle difference
    $theta = $longitude1 - $longitude2; 

    // Calculate the distance
    $distance = (sin(deg2rad($latitude1)) * sin(deg2rad($latitude2))) + 
                (cos(deg2rad($latitude1)) * cos(deg2rad($latitude2)) * 
                cos(deg2rad($theta))); 

    // Convert to degrees
    $distance = acos($distance); 
    $distance = rad2deg($distance); 

    // Convert to miles or kilometers
    $distance = $distance * 60 * 1.1515; 

    // Round the distance
    return (round($distance,2));
}</code>

或者,您可以利用数据库查询来完成此操作:

<code class="sql">$query = "SELECT *,(((acos(sin((".$latitude."*pi()/180)) * 
            sin((`Latitude`*pi()/180))+cos((".$latitude."*pi()/180)) * 
            cos((`Latitude`*pi()/180)) * cos(((".$longitude."- `Longitude`)* 
            pi()/180))))*180/pi())*60*1.1515
        ) as distance 
        FROM `MyTable` 
        HAVING distance > ".$distance.";</code>

以上是如何在 PHP 中使用纬度和经度计算半径内的距离?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn