Как заменить "местоположение в пределах <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 приложения для:
- Получить объекты местоположения из Cloud Firestore в квадрате вокруг текущего местоположения.
- Выполните расчет haversine для каждого объекта в наборе результатов.
- Сортируйте объекты по приблизительному расстоянию, которое является значением, возвращаемым вычислениями haversine, и отбросьте те объекты, где приблизительное расстояние превышает distance_in_meters.
- Верните этот оставшийся набор результатов через API.
Это подходящее решение псевдокода? Если это так, я с удовольствием напишу код в NodeJS для получения этих результатов самостоятельно.