Клуб API Карт

Как изменить поведение автозума при клике на кластер

minsknoteby
8 апреля 2016, 18:03

Может кто-то уже сталкивался с такой задачей и может подсказать решение? Возможно есть какая-то опция для включения такого режима работы, а я ее просто не нашел в документации.

Задача следующая:
Необходимо по клику на класстер, в котором 5 или меньше объектов, показывать балун, если больше - автозумить.

За любую помощь буду благодарен)

4 комментария
Забыл указать, что все объекты добавляются через objectManager
Всеволод Шмыров
9 апреля 2016, 10:00
Вам нужно самому слушать событие boundschange на карте, а точнее поле newZoom и включать/выключать опцию у OM.
Всеволод Шмыров,
Задачу уже решил. Спасибо за Ваш ответ. Хотел только уточнить, как прослушка boundschange может использоваться для решения данной задачи (Если можно, то примером).
Решение:

отключаем опции по-умолчанию при клике на кластер:

clusterOpenBalloonOnClick: false - не открываем балун
clusterDisableClickZoom: true - не зумим карту

Добавляем прослушку события click на кластеры:

this.objectManager.clusters.events.add('click', function(e){
var clusterId = e.get('objectId'),
cluster = this.objectManager.clusters.getById(clusterId),
objects = cluster.properties.geoObjects;

if (objects.length <= 5) {
this.objectManager.clusters.balloon.open(clusterId);
} else {
var bounds = this.getClusterBounds(objects);

this.map.setBounds(bounds, {checkZoomRange: true});
}
}, this);