Met Geo-informatie zoeken binnen een straal van x kilometer

Om de afstand in een straal te berekenen met de variabelen breedtegraad en lengtegraad gebruiken we de Haversine formule.

Met de volgende SQL query vinden we de 20 dichtsbijzijnde locaties binnen een straal van 25 kilometer.

Het berekend de afstand gebaseerd op de breedtegraad en lengtegraad tussen de invoer en de aanwezige locaties in de database.

$query = sprintf("SELECT latitude, longitude, ( 6371 * acos( cos( radians('%s') ) * cos( radians( latitude ) ) * cos( radians( longitude ) - radians('%s') ) + sin( radians('%s') ) * sin( radians( latitude ) ) ) ) AS distance FROM tabel HAVING distance < '%s' ORDER BY distance LIMIT 0 , 20",
  mysql_real_escape_string($latitude),
  mysql_real_escape_string($longitude),
  mysql_real_escape_string($latitude),
  mysql_real_escape_string('25'));

Opmerking : De afstand wordt berekend in kilometers, om dit in mijlen te doen vervang je 6371 door 3959.

Meer informatie : Creating a Store Locator with PHP, MySQL & Google Maps