Как получить пользователей, чье местоположение соответствует введенному местоположению - PullRequest
0 голосов
/ 18 марта 2020

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

Я изучаю mongodb и мне интересно, как это можно сделать.

Я планирую использовать Google API Адресов .

Мой вопрос: как мне сохранить местоположение доктора и как я могу получить информацию о докторе, который находится вокруг искомого местоположения.

Я думал, что смогу сделать это:

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

Но это не кажется очень эффективным. Может кто-нибудь подсказать, как мне это сделать?

Ответы [ 3 ]

0 голосов
/ 29 марта 2020

Вы можете взглянуть на гео-пространственные запросы в mongodb: https://docs.mongodb.com/manual/geospatial-queries/

Шаблон хранения:

location: {
    type: "Point",
    coordinates: [-73.856077, 40.848447]
}

После этого вам нужно поставить гео-индекс и тогда запрос с $ near будет работать: https://docs.mongodb.com/manual/reference/operator/query/near/

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

location: {
    lat: <num>,
    long: <num>,
}

Таким образом, вы хотите найти всех докторов, ближайших к точке с A (lat:, long:) Приблизительно Lat (max) и Long (max) , Lat (мин) и Long (мин), используя метод ниже. И запросите базу данных простым запросом диапазона.

Аналогично этому документу: http://janmatuschek.de/LatitudeLongitudeBoundingCoordinates

0 голосов
/ 30 марта 2020

Для этого не нужно ничего сложного или зависимого от API и базы данных. Просто получите координату клиента и диапазон, по которому он желает путешествовать. Затем вы можете вычислить квадрат, который охватывает выбранный круг диапазона, и использовать широту и долготу, чтобы запросить доступных врачей с помощью> = и <=. </p>

. Это дает преимущество, чтобы служить не только для фактической координаты клиента, но и для любая координата на карте.

Она не на 100% точна, но проста, дает хорошую производительность и приемлема для большинства случаев использования.

SELECT d
  FROM doctors
WHERE latitude <= :customer_max_latitute
  AND latitude >= :customer_min_latitute
  AND longitute <= :customer_max_logintude
  AND logitute >= :customer_min_logitude

Customer willing rage x doctors result

0 голосов
/ 29 марта 2020

Вы можете получить широту и долготу места с помощью API Адресов. Пока администратор добавляет доктора, используйте тот же API Адресов, чтобы получить соответствующую широту и долготу. Теперь вы можете использовать некоторую матрицу расстояний, чтобы проверить, насколько они близки, поскольку у вас есть и доктора, и широта и долгота пользователя.

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