У меня есть таблица MySQL с именем пользователя, широтой и долготой пользователя. Я хотел бы получить список пользователей, которые находятся внутри круга или квадрата заданной широты и долготы с заданным расстоянием. Например, мой ввод Lat = 78.3232 и Long = 65.3234 и расстояние = 30 миль. Я хотел бы получить список пользователей, которые находятся на расстоянии 30 миль от точек 78.3232 и 65.3234. Можно ли решить это одним запросом? Или вы можете дать мне подсказку начать решение этого запроса? Я новичок в гео информации.
20
Ответы:
Оператор SQL, который найдет ближайшие 20 местоположений в радиусе 30 миль от координаты 78.3232, 65.3234. Он вычисляет расстояние на основе широты / долготы этой строки и целевой широты / долготы, а затем запрашивает только те строки, в которых значение расстояния меньше 30 миль, упорядочивает весь запрос по расстоянию и ограничивает его 20 результатами. Для поиска по километрам вместо миль замените 3959 на 6371.
Это использует API Карт Google v3 с бэкэндом MySQL, который у вас уже есть.
https://developers.google.com/maps/articles/phpsqlsearch_v3#findnearsql
источник
Mapperz ответ неверен. Синус должен быть рассчитан по широте, а не по долготе. Итак, SQL-оператор corect:
источник
Это может быть основой для создания функции .. так что вы можете использовать ее в других областях. Также сделает ваш запрос немного чище ... По крайней мере, это мои 2 цента.
источник
Вот мой вариант запроса, кажется немного проще ( http://dexxtr.com/post/83498801191/how-to-determine-point-inside-circle-using-mysql )
источник