Znajdowanie lokalizacji w pobliżu za pomocą MySQL
Oto instrukcja SQL, która znajdzie najbliższe 20 lokalizacji, które znajdują 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.
Struktura tabeli :
id,name,address,lat,lng
UWAGA - Tutaj szerokość =37 i długość =-122. Więc po prostu przekazujesz swoje.
SELECT id, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) *
cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) *
sin( radians( lat ) ) ) ) AS distance FROM your_table_name HAVING
distance < 25 ORDER BY distance LIMIT 0 , 20;
Szczegóły znajdziesz tutaj .