Получение данных из firebase в карты Google

Я делаю приложение, которое загружает LatLngs из firebase и показывает их как маркеры в google maps API, пользователи могут добавлять новые LatLngs.

В моей базе данных также указаны цена и типы markers. На главном экране пользователь может выбрать, какие типы маркеров он хочет видеть на карте.

Итак, мое приложение делает что-то вроде этого:

locations.orderByChild(pricepoint).equalTo(choosenPricepoint);

а затем программно проверяю, соответствуют ли типы выбранным пользователем

int type = Integer.parseInt(locations.child("restaurantType").getValue().toString();
if (type == funCode||  type == runingCode|| type == sportsCode
{
   mMap.addMarker(new MarkerOptions().position(snapshot.getLatlng);
}

И он отлично работает с 250 записями, но я ожидаю, что их в моей базе данных будет более 10 000, поэтому я беспокоюсь, что это будет слишком медленно.

Я не знаю, отображаются ли маркеры только там, где находится камера пользовательских карт, а удаление других будет быстрее. Что ты предлагаешь?

Вам нужно показать маркеры в определенной области или по всей карте?

Levon Petrosyan 01.05.2018 11:43

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

Zawie 01.05.2018 11:50

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

Zawie 01.05.2018 11:56

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

Levon Petrosyan 01.05.2018 11:59
2
4
445
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Вы можете использовать GeoFire, библиотеку firebase, которая использует GeoHashes для объединения lat + lon в одно свойство. Таким образом вы можете выполнять фильтрацию расстояний непосредственно в базе данных.

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

Как вы можете видеть, у них один и тот же id. Итак, сначала вы запрашиваете ближайший объект с помощью GeoFire в записи geo_data, и вы получаете идентификаторы объекта, который находится поблизости, затем вы можете получить объект с его свойствами непосредственно из базы данных, используя ids в моем случае в записи user_data

Хорошо, я собираюсь изучить geofire, но я хочу спросить заранее, есть ли способ отправить дополнительные данные на firebase с геолокацией с помощью geofire?

Zawie 01.05.2018 12:18

Сейчас я отредактирую ответ и объясню, как я его использую.

Levon Petrosyan 01.05.2018 12:21

Хорошо, вот о чем я подумал, большое спасибо!

Zawie 01.05.2018 12:30

Добро пожаловать, если будут какие-то дополнительные вопросы, не стесняйтесь задавать здесь, я постараюсь помочь;)

Levon Petrosyan 01.05.2018 12:31

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