Maison > base de données > tutoriel mysql > Comment calculer les distances dans un rayon en utilisant la latitude et la longitude en PHP ?

Comment calculer les distances dans un rayon en utilisant la latitude et la longitude en PHP ?

Barbara Streisand
Libérer: 2024-10-30 18:40:03
original
595 Les gens l'ont consulté

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

Calcul des distances à partir de la latitude et de la longitude

Dans ce scénario, vous cherchez à déterminer les points dans un rayon de 15 miles du coordonnées saisies par l'utilisateur. Pour y parvenir, vous pouvez utiliser des formules mathématiques pour calculer les distances.

Considérez la fonction PHP suivante :

<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>
Copier après la connexion

Vous pouvez également utiliser une requête de base de données pour y parvenir :

<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>
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal