U moet zoeken naar de formule van Haversine, maar een goed begin zou kunnen zijn:
- Een winkelzoeker maken met PHP, MySQL en Google Maps - Zie sectie 'Locaties zoeken met MySQL'
- Geo/Spatial Search met MySQL
Citeren vanaf de eerste url:
Hier is de SQL-instructie die de dichtstbijzijnde 20 locaties zal vinden binnen een straal van 40 mijl van de 37, -122 coördinaat. Het berekent de afstand op basis van de breedtegraad/lengtegraad van die rij en de beoogde breedtegraad/lengtegraad, en vraagt dan alleen naar rijen waar de afstandswaarde kleiner is dan 25, rangschikt de hele zoekopdracht op afstand en beperkt deze tot 20 resultaten. Om te zoeken op kilometers in plaats van mijlen, vervangt u 3959 door 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;