Sie sollten nach der Haversine-Formel suchen, aber ein guter Anfang könnte sein:
- Erstellen eines Filialfinders mit PHP, MySQL und Google Maps - Siehe Abschnitt „Standorte mit MySQL finden“
- Geo-/räumliche Suche mit MySQL
Zitieren aus der ersten URL:
Hier ist die SQL-Anweisung, die die 20 nächstgelegenen Orte findet, die sich in einem Umkreis von 25 Meilen um die Koordinate 37, -122 befinden. Es berechnet die Entfernung basierend auf dem Breiten-/Längengrad dieser Zeile und dem Ziel-Breiten-/Längengrad und fragt dann nur nach Zeilen, in denen der Entfernungswert kleiner als 25 ist, ordnet die gesamte Abfrage nach Entfernung und begrenzt sie auf 20 Ergebnisse. Um nach Kilometern statt nach Meilen zu suchen, ersetzen Sie 3959 durch 6371.
SELECT
id,
( 3959
* acos( cos( radians(37) )
* cos( radians( lat ) )
* cos( radians( lng ) - radians(-122) )
+ sin( radians(37) )
* sin( radians( lat ) )
)
)
AS distance
FROM markers
HAVING distance < 25
ORDER BY distance
LIMIT 0 , 20;