Как заменить "местоположение в пределах <distance_in_meters> от <latitude>, <longitude>" Apigee BaaS в Firebase Cloud Firestore?

В результате отказа от Apigee BaaS я перевожу веб-приложение, ориентированное на геолокацию, из Apigee BaaS в Firebase Cloud Firestore.

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

location within <distance_in_meters> of <latitude>, <longitude>

Я перенес данные своего приложения в Firebase Cloud Firestore и обнаружил, что, очевидно, нет способа создать аналогичный запрос на языке запросов Cloud Firestore.

Каков наилучший способ заменить эту функциональность сегодня в моем веб-приложении, используя Cloud Firestore в качестве серверной части?

Моя идея состоит в том, чтобы использовать существующий уровень API приложения для:

  1. Получить объекты местоположения из Cloud Firestore в квадрате вокруг текущего местоположения.
  2. Выполните расчет haversine для каждого объекта в наборе результатов.
  3. Сортируйте объекты по приблизительному расстоянию, которое является значением, возвращаемым вычислениями haversine, и отбросьте те объекты, где приблизительное расстояние превышает distance_in_meters.
  4. Верните этот оставшийся набор результатов через API.

Это подходящее решение псевдокода? Если это так, я с удовольствием напишу код в NodeJS для получения этих результатов самостоятельно.

0 ответов

Другие вопросы по тегам