Клуб API Карт

balloonopen у кластера

Пост в архиве.

В новой версии API 2.1.4 обнаружил, что если есть кластер с точками, то событие balloonopen срабатывает 2 раза.

 

clusterer.events.add('balloonopen', function(e){

    // событие

});

 

Как сделать, чтобы событие однократно срабатывало? В 2.1.3 аналогичный код один раз отрабатывал...

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

Добрый день, вы не могли бы прислать ссылку на страницу? Не могу воспроизвести у себя на стенде - у меня обработчик срабатывает 1 раз.

ДедМорозик
28 января 2016, 00:56

К сожалению, разработка совсем закрытая :(

 

Если вы подскажите, как правильно организовать кластер с массивом точек, я буду очень благодарен. При открытии балуна ajax'ом необходимо грузить контент балуна точки/кластера. Собственно на этапе клика по кластеру событие balloonopen отрабатывает дважды. При клике по метке - один раз. Раньше при клике по кластеру e.get('target') возвращал ссылку не на весь кластеризатор, а конкретно на объединение точек.

Выложите минимальный код, воспроизводящий проблему на jsfiddle.net

И если можно пару слов о чем ваш проект, чтобы быть уверенным что Условия использования АПИ не нарушены

ДедМорозик
28 января 2016, 00:56

http://jsfiddle.net/BzRf5/

 

Пока собирал, mari-na-bzzz уже нашла.. ))


Проект просто в глубокой разработке, поэтому показать даже возможности нет. Условия АПИ не желаем нарушать. Помним про них. :)

ДедМорозик
28 января 2016, 00:56

 

И если можно пару слов о чем ваш проект, чтобы быть уверенным что Условия использования АПИ не нарушены

http://www.raiffeisen.ru/offices/

 

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

clusterer.balloon.events.add('open', function (e) {

 var clusterPlacemark = e.get('cluster');

... дальше ваши действия над балуном кластера

});

 

Этот код подписывается на открытие балунов только на кластере.

Если нужно еще подписаться на открытие балуна объекта, нужно написать так

clusterer.events.add('balloonopen', function (e) {

    if (!e.get('target').getGeoObjects) {

       // Одиночная метка

    }

});

 

В будущих релизах дублирование обязательно уберем.

ДедМорозик
28 января 2016, 00:56

Спасибо за хинт! Будем ждать :)