Запрашивать базу данных о местоположении на основе текущего местоположения пользователя

#javascript #python #mysql #html #geolocation

#javascript #python #mysql #HTML #геолокация

Вопрос:

У меня есть база данных о местоположениях, где двумя полями являются долгота и широта. Когда пользователь достигает индексной страницы, я хотел бы получить их местоположение, а затем получить каждую точку внутри базы данных в определенном радиусе расстояния от пользователя.

До сих пор я думал, что мог бы попытаться измерить расстояние с каждой точкой в базе данных, но это может занять некоторое время, если у меня много записей.

Я использую Python для создания своего приложения, но я использую Javascript и Google Maps API для получения местоположения.

Кто-нибудь знает, что я должен использовать для этого?

Спасибо за вашу помощь!

Комментарии:

1. используйте базу данных со встроенными функциями гео, такими как MongoDB

2. @dandavis У вас есть ссылка на документацию какой-либо из таких баз данных? Я просмотрел MongoDB, но не могу найти ничего, что имеет отношение к моей текущей проблеме. Спасибо!

Ответ №1:

Ваше расстояние будет преобразовано в некоторый угол, который вы могли бы добавить и вычесть к вашей долготе и широте. Затем вы могли бы отфильтровать свою базу данных на основе этого диапазона, т. Е. найти элементы, где долгота равна — углу и т.д. Я ожидал бы, что это должно быть достаточно быстро.

Обратите внимание, что если у вас есть [lat_min, lat_max] и [long_min, long_max], вы рисуете прямоугольник, а не круг, который может вас устраивать, а может и не устраивать. Если вам нужна большая точность, вы могли бы затем начать вычислять фактическое расстояние этого меньшего подмножества, что все равно должно быть быстрее, чем вычисление расстояния для каждой точки в базе данных.

Редактировать

@dandavis заставил меня поискать… MySQL, а также MongoDB, похоже, поддерживают геопространственные запросы, что довольно круто! Вот блог о функциях MySQL, который включает в себя ссылку на сайт разработчика. Документы Mongodb по геопространственным запросам можно найти здесь.

Комментарии:

1. Ссылка на блог — это именно то, что я ищу, хотя я действительно не понимаю, как это реализовать в проекте django. Но я думаю, это другой вопрос. Спасибо за вашу помощь!

Ответ №2:

Если вы ищете запросы на основе местоположения в реляционных базах данных, postgresql является более зрелым по сравнению с mysql.

Массовые запросы Mongodb действительно хороши, если вам удобен NoSQL.

Ссылки:

Геопространственные индексы Mongo

Документы по пространственным типам данных Mysql

Комментарии:

1. Я никогда не использовал NoSQL, поэтому выбрал MySQL, хотя у меня ограниченный опыт работы с ним. Спасибо за вашу помощь!