Maksclub
@Maksclub
maksfedorov.ru

Yandex Maps — как вывести объекты в радиусе n из MySQL?

Дано:
модель "Адрес" с координатами ширины и долготы
хранятся в Mysql decimal(9,6))

Необходимо
выбрать из БД по радиусу и по прямоугольнику на заданном расстоянии

Если прямоугольник ясно как делать, но как быть с радиусом?
  • Вопрос задан
  • 427 просмотров
Решения вопроса 2
wielski
@wielski
✔ Совет: Вам помогли? Отметьте ответы решением.
Все очень просто. Если учесть то, что координаты не учитывают кривизну земли, зная примерный радиус планеты можно вычислить дистанцию от одного объекта до другого с помощью легкой формулы.
Ну и в SQL это выражается как-то так:

SELECT
    `id`,
    (
        6371 *
        acos(
            cos( radians( %lat ) ) *
            cos( radians( `lat` ) ) *
            cos(
                radians( `long` ) - radians( %lon )
            ) +
            sin(radians( %lat )) *
            sin(radians(`lat`))
        )
    ) as `distance`
FROM
    `location`
HAVING
    `distance` < %distance
ORDER BY
    `distance`


Где %lat и %lon - координаты, %distance - радиус в километрах.
Ответ написан
BuriK666
@BuriK666
Компьютерный псих
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы