Клуб API Карт

Баллун кластера. Как отследить переключение между табами?

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

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

У меня следующая задача.

На карте множество точек.

Добавляю их на карту через objectManager с включенной клатеризацией.

Для самих точек содержание баллуна изначально не указано.

Задача: в баллуне кластера подтягивать информацию по точке в момент выбора этой точки в списке точек .

Решил идти таким путём. Отлавливать переключение между табами балуна и в этот момент выполнять действия для запроса информации по выбранной точке.

Нашёл такую статью https://yandex.ru/blog/mapsapi/55496.

Воспользовавшись советами, данными там, пытаюсь сделать следующее :

 pointsObjectManager.clusters.events.add('balloonopen', function (e) {
            var clusterId = e.get('objectId');
            var cl = pointsObjectManager.clusters.getById(objectId);
            var optionMonitor = new ymaps.Monitor(cl.options);
            optionMonitor.add("activeObject", function (newValue) {
//todo:: код по запросу информации по точке.
                alert("activeObject: " + newValue);
            });

        });

Но судя по тому, что alert не отрабатывает,  монитор я как-то не так навешиваю.

Подскажите, пожалуйста, что делаю то не так.

4 комментария
Монитор должен следить за полем state коллекции clusters
https://tech.yandex.ru/maps/doc/jsapi/2.1/ref/reference/objectManager.ClusterCollection-docpage/#state
dimik,


А можно,пожалуйста поподробнее. Как к этой коллекции то обратиться.

Пробую так:

======================
var pointsObjectManager = new ymaps.ObjectManager({
// Чтобы метки начали кластеризоваться, выставляем опцию.
clusterize: true,
// ObjectManager принимает те же опции, что и кластеризатор.
gridSize: 32,
preset: 'islands#greenClusterIcons',
clusterDisableClickZoom: true,
clusterHideIconOnBalloonOpen: false,
geoObjectHideIconOnBalloonOpen: false,
groupByCoordinates: false,
geoObjectOpenBalloonOnClick: true,
openEmptyBalloon: true
});


pointsObjectManager.clusters.events.add('balloonopen', function (e) {
var clusterId = e.get('objectId');
var cl = pointsObjectManager.getObjectState(clusterId);
//alert(cl.properties);
var optionMonitor = new ymaps.Monitor(cl.options);
optionMonitor.add("activeObject", function (newValue) {
alert("activeObject: " + newValue);
});
});


Не работает.


s.sivokozov,
 var stateMonitor = new ymaps.Monitor(pointsObjectManager.clusters.state);



Но и конечно не нужно это делать в обработчике клика
Обновлено 6 февраля 2017, 10:32
dimik,
Спасибо большое. Разобрался.