Клуб API Карт

Кластеры или активные области?

kalinov.grigory
27 июня 2013, 18:41

Приветствую, уважаемое сообщество!

На карте сразу вываливается минимум 5 тысяч точек с кастомными баллунами. Начальная загрузка такой карты происходит довольно медленно (загрузка базы данных на сервере + нагрузка сервера яндекса с картами). В данный момент используется кластеризация точек.

Активные области будут работать быстрее кластера и стоит ли заморачиваться?

P.S. Починал АПИ активных областей - тяжело воспринимаю. Как делать тайлы из карты, куда их сохранять, как делать точку в качестве геометрии активной области? Буду весьма признателен за подсказки.

8 комментариев
Подписаться на комментарии к посту

Активные области хороши, когда у вас очень много объектов, которые по каким-то причинам нельзя кластеризовать.

Например, если мы хотим показать на карте пробки, мы не можем объединить их в кластеры, и поэтому единственное решение - активные области.

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

Ну и плюс надо понимать, что если после кластеризации на карте все равно останется много объектов (например вы из 5000 меток делаете 1000 кластеров), то она и дальше будет тормозить. Другими словами - кластеризация работает хорошо, когда в результате на карте оказывается не более 100 меток.

а у активных областей ещё проблемы с внесением изменений.

Невозможно интерактивно изменять позиции объектов. По допиленному методу "интерактивного" изменения, затем высчитываем в каких тайлах находилась метка и перерисовываем те тайлы. Для того чтобы изменения не доходили по 2 дня отказываемся от кеша браузера. Я не говорю что это плохо, это очень даже восхитительно когда у вас 100 000 статических объектов, но 5к можно было бы попытаться и с кластерами.

 

Вы лучше подумайте какой характер несёт ваша карта, посмотреть на 5 минут 5-10 меток, либо длительное пребывание на карте. Подумайте насколько кучно у вас будут объекты, может можно будет ограничить зум, чтобы не видно было все метки сразу, но было так же удобно. Вопрос очень тонкий и вам тут врятли помогут не зная полной ситуации.

Для видимости более быстрой загрузки я бы рекомендовал сначала выдать объекты области видимости пользователя, а потом аяксом передать остальные данные. Карта прогрузится намного быстрее и пока пользователь начнёт соображать что ему надо могут успеть догрузиться остальные объекты

Пользуюсь активными областями при 8000 объектов (правда их кол-во ежедневно увеличивается). Очень много плюсов могу привести для активных областей. Из минусов только пожалуй сложности оперативного обновления. Лично у меня это делается в кроне раз в час для всей карты сразу. Если надо всегда получать свежие данные, которые часто обновляются, то можно и кластеры рассмотреть, а в остальных случаях однозначно активные области

Да, а ещё это экономит трафик, т.к. выгружаются только нужные тайлы пользователю, а не все 8к объектов в json/xml формате.

А есть пример использования активных областей и кластеров? Имеется ввиду создание кластеров посредством активных областей?

Не очень представляю как это. Есть кластеры, а есть активные области. Примеры и того и другого отдельно есть, но что бы вместе - не встречал.

У нас в блоге есть сейчас две видеозаписи доклада с Я.Субботника про активные области. Посмотрите, возможно, поможет разобраться. http://ymapsapi.ya.ru/posts.xml?tag=9792588

kalinov.grigory
3 июля 2013, 12:15

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