Dovresti cercare la formula Haversine, ma un buon inizio potrebbe essere:
- Creazione di un localizzatore di negozi con PHP, MySQL e Google Maps - Vedi la sezione 'Trovare posizioni con MySQL'
- Ricerca geografica/spaziale con MySQL
Citando dal primo URL:
Ecco l'istruzione SQL che troverà le 20 posizioni più vicine che si trovano entro un raggio di 25 miglia dalla coordinata 37, -122. Calcola la distanza in base alla latitudine/longitudine di quella riga e alla latitudine/longitudine target, quindi richiede solo le righe in cui il valore della distanza è inferiore a 25, ordina l'intera query in base alla distanza e la limita a 20 risultati. Per cercare per chilometri anziché per miglia, sostituisci 3959 con 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;