У меня есть база данных, в которой сейчас находится примерно 10 тыс. строк. Все они имеют долготу/широту, основанную на центре zipcode. Я нашел запрос, который я сейчас пытаюсь расширить, но во всем он хорошо работает. Однако в моем примере ниже я пытаюсь найти вещи в радиусе 25 миль, которые, по всей видимости, работают по большей части. Большинство моих результатов дают в пределах 25-мильных критериев, однако я получаю горстку, которая отходит от чего-либо от 86 миль до 800 миль от отметки.
Пример: Это мой центр lat/lon: 37.2790669, -121.874722 = Сан-Хосе, Калифорния Im получаю результаты как: 33.016928, -116.846046 = Сан-Диего, Калифорния, что составляет около 355 миль от Сан-Хосе.
мой текущий запрос выглядит так:
SELECT *,(((acos(sin(($lat*pi()/180)) * sin((`latitude`*pi()/180))+cos(($lat*pi()/180))
* cos((`latitude`*pi()/180)) * cos((($lon - `longitude`)*pi()/180))))*180/pi())*60*1.1515)
AS `distance` FROM `geo_locations` HAVING `distance` <= 25 ORDER BY `distance` ASC"