Изчисляването на разстоянието между две координати всъщност не е толкова трудно, като се има предвид формулата на хаверсинус.
SELECT
-- stuff here
, ( 6371000 * acos( cos( radians(45.815005) ) * cos( radians( stuff.lat ) ) * cos( radians( stuff.lng ) - radians(15.978501) ) + sin( radians(45.815005) ) * sin(radians(stuff.lat)) ) ) AS distance
FROM
stuff
HAVING
distance < 500
Необходими промени от оригиналния отговор:
-
Константата, предложена в оригиналния отговор, предоставя стойностите за мили или километри. Промених константата тук за работа с измервателни уреди.
-
Константите са се променили, за да използват вашите координати. Може да искате да адаптирате заявката още малко, за да направите тези параметри вместо константи.
-
having
изражението се промени малко, за да отрази желанието ви за 500 метра. Отново, това може да е нещо, което искате да параметризирате.