Du bör söka efter Haversine-formeln, men en bra början kan vara:
- Skapa en butikssökare med PHP, MySQL och Google Maps - Se avsnittet "Hitta platser med MySQL"
- Geo/Spatial Search med MySQL
Citerar från den första webbadressen:
Här är SQL-satsen som hittar de närmaste 20 platserna som ligger inom en radie av 25 miles till 37, -122-koordinaten. Den beräknar avståndet baserat på radens latitud/longitud och mållatitud/longitud, och ber sedan om endast rader där avståndsvärdet är mindre än 25, ordnar hela frågan efter avstånd och begränsar den till 20 resultat. För att söka efter kilometer istället för miles, ersätt 3959 med 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;