Клуб API Карт

Разные иконки для разных кластеров

Пост в архиве.
rex.mundi
6 сентября 2012, 13:02

Добрый день!

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

Я знаю вот такой способ задания иконки кластера:

 

var clusterIcons = [{

    href: '../_imgs/ymap_cluster.png',

    size: [50, 50],
    offset: [0, 0]
}];

var cluster = new ymaps.Clusterer({ clusterIcons: clusterIcons });

 

Но в таком случае у каждого кластера будет одна и та же картинка. 

Как можно сделать разные иконки для разных кластеров?

 

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

Посмотрите пример в документации, там как раз задаются разные картинки для разных размеров кластеров.

К сожалению, это не то.

 

В примере картинка зависит от  размера кластера, а мне необходимо задавать картинку кластер в зависимости от содержимого кластера, т.е. если в кластере 5 домов, то одна картинка, если же дом + станция метро + ещё что-нибудь - нужна другая картинка.

Понятно. Вот вам пример кода, который в зависимости от значения поля в данных геообъекта выставляет кластеру нужную картинку.

clusterer.createCluster = function(center, geoObjects) {

var cluster = ym.Clusterer.prototype.createCluster.call(clusterer, center, geoObjects);

var rf = false;

var gf = false;

for (var i = 0, l = geoObjects.length; i < l; i++) {

if (geoObjects[i].properties.get("color") == "red") {

rf = true;

}

if (geoObjects[i].properties.get("color") == "green") {

gf = true;

}

}

var color;

if (rf && gf) {

color = "yellow";

} else if (rf) {

color = "red";

} else {

color = "green"

}

 

cluster.options.set({icons: [{

href: color  + ".png",

size: [46, 46],

offset: [-23, -23]

}], numbers: []});

return cluster;

}

Огромное вам спасибо! Буду изучать!