Клуб API Карт

14 комментариев

Добрый день.

 

Вы слушаете событие на карте, но относительно карты балун не закрывается, а только перемещается. Вы можете слушать события на геообъектах (или на коллекции, например map.geoObjects), тогда вы будете получать его с того геообъекта, на котором балун открывается или закрывается.

 

Событие на карте произойдет при физическом закрытии балуна.

Здравствуйте!

 Спасибо за идею, но это не работает при динамической загрузке меток.

А мой пример работает в 2.0 .

 

Будем думать.

 

Вам достаточно заменить myMap.events на myMap.geoObjects.events и все заработает

Хорошо, но как быть в этом случае:

 http://jsfiddle.net/vwawy/ 

(Метки динамически загружаются и кластеризуются).
Вариант со статическим кластером не предлагать: слишком долго очищать и записывать каждую метку по очереди. 

 

Это справедливо и для объектов в составе кластера - можно слушать событие на map.geoObjects, события от балунов одиночных меток будут так же прокидываться.

Но пример-то не работает =)

 Вы правы, я вас обманула. Кластеризатор дествительно не прокидывает событие balloonopen по дереву, починим в будущих релизах.

Для кластеризатора работает вот такое решение http://jsfiddle.net/vwawy/1/

У меня обновляются метки при движении карты, так что каждый раз переназначать обработчик - плохой вариант.

Все равно спасибо! Будем ждать релиза или откатимся на прошлую версию. 

То есть вы на каждую партию объектов создаете по кластеризатору?

А как вы очищаете старые объекты?

Да, из JSON'а c заготовленными настройками.

А никак =) Я удаляю кластер с карты, его переопределяю (создаю новый на его место), а остальное дело за сборщиком мусора) 

Ну вы можете при добавлении кластера на карту подвешиваться на его события, а при удалении кластера с карты переставать слушать на нем события

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

Правку уже сделали, выедет в будущем релизе

Супер, спасибо!