ホームページ >データベース >mysql チュートリアル >PHP で緯度と経度を使用して半径内の距離を計算するにはどうすればよいですか?

PHP で緯度と経度を使用して半径内の距離を計算するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-30 18:40:03534ブラウズ

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。