Клуб API Карт

Выборочная иконка кластера из стандартного набора в зависимости от содержимого кластера

jenkins.andr
30 марта 2016, 02:46

Постановка задачи: в качестве иконок кластеров должны использоваться стандартные иконки кластеров из option.presetStorage.
Все иконки кластеров  должны выглядеть одинаково (twirl#blueClusterIcons) за исключением некоторых, а именно, если внутри кластера оказывается метка (Placemark) удовлетворяющая некоторым условиям, то иконку кластера сделать другого цвета (twirl#invertedRedClusterIcons).

Делаю примерно так:

//создаю новый Clusterer стандартного вида twirl#blueClusterIcons
myClusterer = new ymaps.Clusterer({
  preset: 'twirl#blueClusterIcons'
});

//переопределяю у него метод createCluster 
myClusterer.createCluster = function(center, geoObjects) {
  //вызываем родительский метод который создаёт объект Cluster
  var oCluster = ymaps.Clusterer.prototype.createCluster.apply(this, arguments);

  //обходим входящие в кластер гео объекты
  $.each(geoObjects, function(key, obj) {
    //при определённом условии меняем внешний вид на другой цвет, тоже один из стандартных
    if( obj.some_property ) {
        /*
        * далее здесь нужно изменить oCluster так чтобы он 
        * стал twirl#redClusterIcons
        */
    }
  });

  //возвращаем модифицированный oCluster
  return oCluster;
};

Имеется ввиду, что необходимо использовать именно стандартные yandex иконки кластеров. Как использовать в качестве меток свои собственные файлы иконок мне более менее понятно, есть примеры, а как применить стандартный пресет не понятно, какая-то путанница с менеджером опций и наследованием опций.

ps: ymaps api v2.0

5 комментариев
Подписаться на комментарии к посту
Не вижу где вы меняете и где путаница. Соберите минимальный пример на jsfiddle
dimik,
в том то и дело что я не знаю как поменять, поэтому там и пропуск
dimik,
а путанница у меня в голове )
dimik,
https://jsfiddle.net/xjsqd0sp/28/

В коде есть коментарий непонятного места
jenkins.andr,
Выяснилось, что это никогда и не работало в 2.0.
Если нужна эта функциональность – только вариант перейти на последнюю версию 2.1