LA distance en km entre 2 positions peut se calculer comme suit :
6371*acos(cos(LatitudeA)*cos(LatitudeB)*cos(longitudeB-longitudeA)+sin(LatitudeA)*sin(latitudeB))
Plus de détail sur un article que j'ai ecrit y'a longtemps ^^ http://blog.oroger.fr/blog/2009/05/2...e-deux-villes/
Tu peux donc appliquer ça à une requête SQL (non testée) :
$query = "SELECT *, ( 6371* acos( cos( radians($lat) ) * cos( radians( latitude ) ) * cos( radians( longitude ) - radians($lon) ) + sin( radians($lat) ) * sin( radians( latitude ) ) ) ) AS distance FROM latable ORDER BY distance ASC LIMIT 0, 10"
latitude, longitute étant les noms de tes champs et $lat,$long étant les valeurs de référence à tester
Tu peux même limiter à un rayon d'action en ajoutant à ta requête HAVING distance < xxxx
Partager