Клуб API Карт

Менять значек кластера при наведении

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

Вот захотелось такое реализовать.

Возможно ли такое?

 

Пока не получилось. Что делаю:

var clusterer = new ymaps.Clusterer({preset: 'twirl#redClusterIcons'});

_this.map.geoObjects.add(clusterer);

clusterer.add(placemark);

clusterer.events.add('mouseenter', function(e){

    console.log(e.get('target'));

    e.get('target').options.set({preset: 'twirl#invertedRedClusterIcons'});

});

 

Кластер появляется. Работает, все. В консоле вижу, target. Но вот стиль самого кластера не меняется.

Кто-то подобное делал? По аналогии с метками. Для меток подобное работает, аж бегом. Вот пример: Смена значка метки при наведении

11 комментариев

В кластеризаторе есть небольшое неудобство с пресетами - пресеты рассчитаны на то, что их будут задавать сразу на весь кластеризатор.

Чтобы поменять цвет кластера нужно написать вот так

var preset = ymaps.option.presetStorage.get('twirl#redClusterIcons');

e.get('target').options.set('icons', preset.clusterIcons);

Мы подумаем, как это можно поправить.

Виталий С.
28 января 2016, 01:04

Я правильно понимаю, поменяются только нужный кластер, на который навели, или все кластеры? Смотрю на код и есть подозрение, что поменяются все кластеры на карте.

 

Вечером смогу посмотреть более подробно, проверить.

нет, поменяется только 1 кластер. Вы же конкретно ему опцию задаете.

Виталий С.
28 января 2016, 01:04

Спасибо, Мариночка.

Может введем опцию clusterPreset?

да решу вопрос, таску уже поставила

Виталий С.
28 января 2016, 01:04

Ребята, а к вам можно в команду? ;)

Следите за вакансиями на company.yandex.ru ;)

Виталий С.
28 января 2016, 01:04

Подскажите еще такой вопрос.

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

 

Если у вас есть метка, то чтобы узнать, в кластере она или нет, можно использовать метод getObjectState кластеризатора.

Если есть ссылка на объект и нужно узнать, метка это или нет, можно проверить наличие у объекта метода getGeoObjects - если метод есть, то объект является кластером.

Виталий С.
28 января 2016, 01:04

Спасибо.