Maison >base de données >tutoriel mysql >Comment trouver des points dans un rayon en utilisant la latitude et la longitude ?
Détermination de la proximité dans un rayon étant donné les latitudes et les longitudes
Imaginez un scénario dans lequel un formulaire permet aux utilisateurs de saisir leur longitude et leur latitude. Simultanément, une base de données contient un tableau contenant une liste complète de coordonnées géographiques. La tâche à accomplir consiste à identifier tous les points dans un rayon de 15 miles des coordonnées de l'utilisateur.
Solution :
Pour y parvenir, nous exploitons le concept de calcul de distance entre deux points à l'aide d'une formule spécifique :
function get_distance($latitude1, $longitude1, $latitude2, $longitude2, $unit = 'Mi') { $theta = $longitude1 - $longitude2; $distance = (sin(deg2rad($latitude1)) * sin(deg2rad($latitude2))) + (cos(deg2rad($latitude1)) * cos(deg2rad($latitude2)) * cos(deg2rad($theta))); $distance = acos($distance); $distance = rad2deg($distance); $distance = $distance * 60 * 1.1515; switch($unit) { case 'Mi': break; case 'Km' : $distance = $distance * 1.609344; } return (round($distance,2)); }
Alternativement, une requête de base de données peut être utilisée :
$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.";
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!