Я делаю приложение, которое загружает 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, поэтому я беспокоюсь, что это будет слишком медленно.
Я не знаю, отображаются ли маркеры только там, где находится камера пользовательских карт, а удаление других будет быстрее. Что ты предлагаешь?
Теперь я показываю маркеры по всей карте, но я думаю, что было бы хорошо, если бы пользователю пришлось выбирать город, в котором он хочет видеть эти маркеры.
Потому что сейчас кажется, что это действительно замедлит работу приложения, я прав? Я не знаю, но показывать сразу 10 000 маркеров кажется очень плохой идеей, потому что я думаю, что это может потребовать много памяти.
Правильно, чтобы вы могли показать некоторые из них в определенной области, и пока пользователь перемещается по карте, вы можете загружать другие местоположения.
Вы можете использовать GeoFire, библиотеку firebase, которая использует GeoHashes для объединения lat + lon в одно свойство. Таким образом вы можете выполнять фильтрацию расстояний непосредственно в базе данных.
У вас должно быть 2 записи в базе данных firebase, одна для настройки местоположения вашего объекта, а другая для настройки вашего объекта с его полями.
Как вы можете видеть, у них один и тот же id
. Итак, сначала вы запрашиваете ближайший объект с помощью GeoFire в записи geo_data
, и вы получаете идентификаторы объекта, который находится поблизости, затем вы можете получить объект с его свойствами непосредственно из базы данных, используя ids
в моем случае в записи user_data
Хорошо, я собираюсь изучить geofire, но я хочу спросить заранее, есть ли способ отправить дополнительные данные на firebase с геолокацией с помощью geofire?
Сейчас я отредактирую ответ и объясню, как я его использую.
Хорошо, вот о чем я подумал, большое спасибо!
Добро пожаловать, если будут какие-то дополнительные вопросы, не стесняйтесь задавать здесь, я постараюсь помочь;)
Вам нужно показать маркеры в определенной области или по всей карте?