Клуб API Карт

События кластеризатора - как?

Пост в архиве.
nazar-pc
6 ноября 2012, 00:22

 

Пробую такой код:

cluster = new ymaps.Clusterer();
cluster.events.add(
     'click',
     function () {
         alert('');
    }
);

Но при открытии кластера событие не срабатывает.

 

 Если более глобально - задача следующая: при открытии Placemark'ов менять их содержимое. Все они автоматически объединяются в кластеры. Так вот для отдельных элементов всё работает (использую событие balloonopen), а для тех, что в кластере - нет. Смену содержимого балуна в поп-апе кластера придумал сделать, повесив ссылку с onclick в clusterCaption, но открывается кластер пустой. Как такое провернуть?

 

2 комментария

Открытие балуна съедает клик на кластере. Слушайте вместо него событие balloonopen. 

Через e.get('target') можно получить ссылку на кластер, для которого открыт балун. А через

cluster.state.get('activeObject'); можно получить ссылку на текущий активный объект.

Чтобы следить за изменением активного объекта, при открытии балуна на кластере нужно слушать событие change на cluster.state, и проверять, не сменился ли activeObject.

Большое спасибо, то что нужно!

Работает вот так, в Placemark храню ещё и нужный мне id, вдруг кому-то пригодится:

cluster    = new ymaps.Clusterer();
cluster.events.add(
      'balloonopen',
      function (e) {
          get_cinema_schedule(e.get('target').id ? e.get('target').id : e.get('target').state.get('activeObject').id);
      }
)

Отслеживает и смену объектов, и открытие отдельных Placemark и кластеров.