Powinieneś poszukać formuły Haversine, ale dobrym początkiem może być:
- Tworzenie lokalizatora sklepów za pomocą PHP, MySQL i Map Google - Zobacz sekcję „Znajdowanie lokalizacji za pomocą MySQL”
- Wyszukiwanie geograficzne/przestrzenne za pomocą MySQL
Cytując z pierwszego adresu URL:
Oto instrukcja SQL, która pozwala znaleźć najbliższe 20 lokalizacji znajdujących się w promieniu 25 mil od współrzędnej 37, -122. Oblicza odległość na podstawie szerokości/długości geograficznej tego wiersza i docelowej szerokości/długości geograficznej, a następnie pyta tylko o wiersze, w których wartość odległości jest mniejsza niż 25, porządkuje całe zapytanie według odległości i ogranicza je do 20 wyników. Aby wyszukiwać według kilometrów zamiast mil, zamień 3959 na 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;