Структура базы данных при создании приложения карты

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

Например, если вы ищете «Макдональдс» с помощью приложения Google Maps, оно покажет ближайший Макдональдс, а не Макдональдс, расположенный в 1000 км.

Я пытаюсь использовать Cloud Firestore от Firebase для своей базы данных, подходит ли это? Думаете, Cloud Firestore для этого не подходит из-за оплаты за документ?

Одни из данных такие:

{
  "name": "1",
  "cord": {
    "lat": ....,
    "lon": ....,
  },
  "type": "pin",
  ....
}

Я не знаю, почему вы получили отрицательные голоса. но, на мой взгляд, ваш вопрос очень корректен относительно того, как ограничить данные в Firestore, когда дело касается геолокации.

Alex Mamo 05.09.2024 09:29
Интеграция Angular - Firebase Analytics
Интеграция Angular - Firebase Analytics
Узнайте, как настроить Firebase Analytics и отслеживать поведение пользователей в вашем приложении Angular.
1
1
51
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Я не уверен, подходит ли Firebase Storage для такого объема данных. Вместо использования широты и долготы вы можете использовать геохеши. Они могут помочь вам упростить управление данными о местоположении и их поиск, а также хранить меньше данных и сократить расходы.

Это то, что я ищу! Большое спасибо.

yolo 03.09.2024 09:57
Firebase Storage действительно подходит не для хранения geolocations, а для хранения файлов. Что касается Firestore, до марта 2024 года использование geohashes было единственным способом реализации geoqueries, но теперь вы можете использовать условия диапазона в нескольких полях, и вы можете реализовать geoqueries гораздо проще и дешевле.
Alex Mamo 05.09.2024 09:31

Однако точек более 1000, и мне не удается понять, как построить эти данные.

Речь идет не о том, как структурировать данные, а о ограничении количества документов возвращаемых запросов, посредством вызова limit(x).

Например, если вы ищете «Макдональдс» с помощью приложения Google Maps, оно покажет ближайший Макдональдс, а не Макдональдс, расположенный в 1000 км.

Это правильно. Вы можете добиться того же самого с помощью Cloud Firestore. Хотя ответ @Julian может сработать, обратите внимание, что его решение больше не актуально, поскольку Firebase недавно (4 месяца назад) добавила возможность иметь условия диапазона в нескольких полях в одном и том же запросе Firestore.

Итак, чтобы добиться этого, я рекомендую вам посмотреть:

Кроме того, я также рекомендую вам прочитать отличную статью, написанную @FrankvanPuffelen, в которой сравнивается стоимость geohashes и более новый подход с условиями диапазона в нескольких полях в Firestore:

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