mySQL долгота и запрос широты для других строк в радиусе x мили

В настоящее время у меня есть firebase database, заполненная примерно 10 тыс. Строк. Все они имеют долготу / широту, основанную на центре zipcode. Я нашел запрос, который я сейчас пытаюсь расширить, но во всем он хорошо работает. Однако в моем примере ниже я пытаюсь найти вещи в радиусе 25 миль, которые, по всей видимости, работают по большей части. Большинство моих результатов дают в пределах 25-мильных критериев, однако я получаю горстку, которая отходит от чего-либо от 86 миль до 800 миль от отметки.

Пример: Это мой центр lat / lon: 37.2790669, -121.874722 = San Jose, CA. Я получаю результаты вроде: 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" 

Вот запрос, который я использую в локаторе хранилища, с которым я работаю:

 SELECT `id`, ( 6371 * acos( cos( radians( :lat ) ) * cos( radians( `lat` ) ) * cos( radians( `long` ) - radians( :long ) ) + sin(radians(:lat)) * sin(radians(`lat`)) ) ) `distance` FROM `location` HAVING `distance` < :distance ORDER BY `distance` LIMIT 25 

:lat и :long - это точки, переданные пользователем, где lat и long - точки, хранящиеся в базе данных.

Расстояние: расстояние измеряется в милях, в рабочей версии кода: расстояние фактически вытягивается от падения в пределах от 10 до 50 миль

Изменение кода для работы с километрами может быть выполнено путем изменения 3959 (расстояние от центра земли до его поверхности в милях) до 6371 (3959 миль, пересчитанных в километры) благодаря joshhendo для этого решения.

  • Как получить часовой пояс из местоположения с использованием координат широты и долготы?
  • Передача строк между действиями в android
  • Извлечение широты и долготы перетаскиваемого штыря через API Карт Google V3
  • Вычислить вторую точку, зная начальную точку и расстояние
  • Каков самый простой и надежный способ получить текущее местоположение пользователя на Android?
  • Давайте будем гением компьютера.