Клуб API Карт

Проблемы с закрытием балуна при кластеризации

die2004
30 сентября 2014, 21:45

1. Баг

Открываем пример кластеризации в песочнице: http://api.yandex.ru/maps/jsbox/2.1/clusterer_create

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

Кликаем на некластеризованную метку. Видим ее балун.

Теперь отдаляем карту, чтобы метка попала в кластер.

У меня при этом карта съезжает в океан.

 

2. Продолжение темы http://clubs.ya.ru/mapsapi/replies.xml?item_no=48337

Проблема актуальна до сих пор. Ajaxy пишет, что открытие нового баллуна взамен старого не является его закрытием/открытием в контексте карты и кластерера. Логичность подобного поведения спорна, однако, проведите эксперимент из пункта 1 с большой картой (где балуны появляются не снизу, а на метке). Когда метка попадает в кластер, ее балун закрывается, но события никакого не происходит.

placemark.balloonclose, map.balloon.close, clasterer.balloon.close, clasterer.closeballon - все эти события сработают, если закрыть балун вручную, и только clasterer.balloon.close, если балун закрывается от изменения масштаба (и кластеризации соответственно)

Причем это будет закрытие clasterPlacemark.balloon в том случае, если он есть. (обратите внимание: claster, а не clasterer)

 

3. Мне очень нужно получать событие закрытия балуна метки. Кто подскажет, как это сделать?

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

Слушайте событие balloonclose на кластеризаторе

clusterer.events.add('balloonclose', function () {alert(1)});

событие будет генерироваться при любом варианте закрытия балуна на метке

За баг спасибо, будем чинить

Спасибо, но не работает: http://codepen.io/dclike/pen/HBfDg

Скрытие балуна происходит совершенно логично, но с событиями небольшой зоопарк. Поиграйтесь с закрытием балуна отдельной метки и балуна кластера (который отображает инфу по нескольким меткам). При ручном закрытии все прекрасно, а вот при скрытии по зуму карты, кажется, что-то забыли дернуть.

Можно еще что-нибудь попробовать?

Вот этот вариант работает для всех случаев, кроме того, когда метка с открытым балуном попадает в кластер. Но последнее - это баг, поправим в ближайших релизах.

http://codepen.io/anon/pen/xqbvl

Если нужно до фикса отслеживать случай, когда метка попадает при зуме в кластер - вот временный воркэраунд http://codepen.io/anon/pen/ExHCu

Спасибо за оперативный ответ! Очень похоже, что последний вариант поможет. Ну и ждем обновлений!