Клуб API Карт

Не отслеживается изменение активного объекта в балуне кластера

vechorkastv
26 августа 2014, 16:02

Добрый день!

Перехожу с 2.0 на 2.1 и столкнулся с проблемой. В версии 2.0 мой код отрабатывался отлично. Перейдя на 2.1 быстро внёс необходимые изменения по документации. Всё работает, кроме одной стандартной фичи.

В открытом кластере макета cluster#balloonTwoColumns в левой панели, называемой clusterCaption, не отслеживаются изменения активного объекта. По клику на другие объекты кластера нет никакой реакции. У меня в clusterCaption html блок с маленькой превьюшкой и текстом. Если в clusterCaption передать просто текстовую строку - всё работает отлично. Но мне нужен там именно html.

Это какая-то незадокументированная особенность или баг?

И как лучше заставить всё работать? Было бы печально создавать собственный макет, т.к. стандартный во всём меня устраивал.

Спасибо! 

-===UPD===-

Я тут сам покопался и судя по всему div и img перекрывают класс ymaps-b-cluster-tabs__menu-item, по которому отслеживается событие клика для переключения активного объекта. Но в 2.0 всё работало адекватно. Как быть?

 

 

5 комментариев
Подписаться на комментарии к посту
Всеволод Шмыров
27 августа 2014, 10:42
Доброе утро! Могли бы вы дать ссылку на страницу с ошибкой?

Вот упрощённая вырезка. Если убрать стили, то всё работает. Но в 2.0 всё работало со стилями.

http://jsfiddle.net/xdroidx/0stw2qwa/6/

Всеволод Шмыров
27 августа 2014, 12:46
Это баг API. Мы не предполагали, что в левой колонке может располагаться не просто текст, а html. В следующем релизе мы это поправим.

Вообще пока нормального решения нет
Можно было бы сделать так
http://jsfiddle.net/0stw2qwa/7/
Но css-свойство pointer-events не работает в IE < 11.

Но тут все сложнее. Вы переопределяете CSS-свойства API. Мы крайне не рекомендуем так делать, так как в названиях свойств мы не соблюдаем обратную совместимость. К примеру, начиная с 12 версии мы добавляем версию API в CSS-класс. При очередном обновлении ваша логика сломается.
Мы в таких случаях рекомендуем создавать собственные макеты. В песочнице есть пример создания своего макета балуна кластера
http://api.yandex.ru/maps/jsbox/2.1/cluster_custom_balloon_content_layout_21
Всеволод Шмыров
27 августа 2014, 13:13
Хотя вы можете не весь макет балуна кластера задать, а только лишь боковое меню. Это можно сделать через (пока) недокоментированную опцию "clusterBalloonLeftColumnLayout".
Накидал пример http://jsfiddle.net/ahgnv5co/5/
Эту опцию мы скорей всего тоже в следующем релизе опубликуем.

Это как раз то, что нужно! Сам пробовал переопределять левую панель, но не было ни документации, ни примеров. Сейчас, думаю, справлюсь. Спасибо огромное!