Клуб API Карт

Подскажите как запретить увеличивать отдельный кластер?

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

Опция clusterDisableClickZoom работает если применяется к объекту Clusterer, у объекта Cluster существует опция disableClickZoom но она почемуто не срабатывает, пример:

var it = Ymap.clusterer.getIterator();
var cluster = null;
while (cluster = it.getNext()) {       
    if(cluster.getGeoObjects) {
        cluster.options.set('disableClickZoom', true);       
    }
}

а вот так работает:

Ymap.clusterer.createCluster = function (center, geoObjects) {                       
    var cluster = ymaps.Clusterer.prototype.createCluster.call(Ymap.clusterer, center, geoObjects);
    cluster.options.set('disableClickZoom', true);

1 комментарий

Это не совсем правильный путь перезадания опций кластера - кластера постоянно обновляются и пересоздаются. Правильнее задавать опцию конкретному кластеру сразу при его создании внутри метода createCluster.

 

clusterer.createCluster = function (center, geoObjects) {

    var cluster = ymaps.Clusterer.prototype.createCluster.call(this, center, geoObjects);

    if (???) {

       cluster.options.set('disableClickZoom', true);

    }

    return cluster;

 

Ваш пример не работает, так как кластер "читает" эту опцию при добавлении на карту, и затем не слушает ее динамическое изменение. Слушать изменение опции не хочется, потому что задавать опции отдельностоящему кластеру не совсем правильно идеологически (кластера очень быстро изменяются), а навешивать слушателя на изменение опций занимает время.