Клуб API Карт

Балун метки и кластер, API v2, предложение по улучшению :)

zhukdl
26 июня 2012, 10:53

Всем привет.

Вчера полдня потерял из-за того, что нет "защиты от дурака" в методе placemark.balloon.open();

Но сначала о кластере.

Пример1:

Итак, имеем метки. И есть список меток, при клике на любой позиции списка - открываем балун метки.

Все работает хорошо. Усложняем задачу.

Пример2:

Теперь эти метки помещаем в кластерер. В итоге:

- если метки при масштабе не в кластере - все ОК

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

 

Предложение как раз и состоит в том, то при вызове метода .balloon.open() просто проанализировать, если метка не на карте, то и не надо ничего делать. Это две строчки кода, но они очень полезные.

Например, добавил метку, вызвал вывод балуна, но не поместил ее на карту. Добавил метку в кластерер, вызвал вывод но не добавил кластерер на карту. И прочие "не очень правильные" ситуации.

Эта проблема из-за того, что балун - это сущность метки (карты, кластера), а не отдельная сущность.

 

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

Здравствуйте, вот буквально сейчас делаю метод, который позволит получить информацию о метке в кластеризаторе - видна или нет, и принадлежит кластеру или нет.

С помощью этих данных можно будет перед открытием балуна контролировать, добавлена ли метка на карту. Кажется, это решит ваши проблемы.

Oтлично.

Спасибо :)

А еще про документацию тогда :)

http://api.yandex.ru/maps/doc/jsapi/2.x/ref/reference/Clusterer.xml

http://api.yandex.ru/maps/doc/jsapi/2.x/ref/reference/Cluster.xml

В примерах и там и там создается кластерер.

Я так понял, что опции кластера входят в опции кластерера.

Может как-то это обозначить в документации, а то только из примера можно догадаться

У нас во втором апи живет система каскадных опций. Например, опции кластера можно задавать через родительский кластеризатор с префиксом "кластер", и они дойдут до кластеров.

Действительно, этот момент не очень понятный, мы планируем добавить статей и примеров в документацию на эту тему.

Ну, не совсем очевидно

Cluster
icons
numbers
disableClickZoom
Clusterer
clusterIcons
clusterNumbers
clusterDisableClickZoom