Клуб API Карт

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

У кластера нет опции imageHref.

Если используется стандартный макет, надо менять опцию icons

Окей. Опция меняется а иконка на карте - нет. Почему?

есть ссылка?

Вот ссылка: http://api.yandex.ru/maps/jsbox/2.1/clusterer_icon_hover

 

Вот код:

 

clusterer.events        // Можно слушать сразу несколько событий, указывая их имена в массиве.        .add(['mouseenter', 'mouseleave'], function (e) {            var target = e.get('target'),                type = e.get('type');            if (typeof target.getGeoObjects != 'undefined') {                // Событие произошло на кластере.                if (type == 'mouseenter') {                    target.options.set({                        'preset': 'islands#invertedVioletClusterIcons',                   'icons': [{                       href: 'http://icons.iconarchive.com/icons/femfoyou/angry-birds/256/angry-bird-yellow-icon.png',       size: [32, 32],       offset: [-16, -16]                   }]                    });                                    } else {                    target.options.set('preset', 'islands#invertedVioletClusterIcons');                }            } else {                // Событие произошло на геообъекте.                if (type == 'mouseenter') {                    target.options.set('preset', 'islands#pinkIcon');                } else {                    target.options.set('preset', 'islands#violetIcon');                }            }        });

 

Можно подставить и посмотреть.

Мне неясно почему он не работает. Сделал как вы сказали.

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

При создании иконки кластера проводится проверка - задана ли пользовательская картинка или используется стандартный пресет. Если используется стандартный пресет, то для кластера создается специальная статическая иконка (она быстрее отрисовывается на карте). Сейчас проверка на пользовательское значение опции проходит только в момент создания метки. 

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

Плюс кластер сейчас не подхватывает значение опции icons при заданном пресете, а реагирует на опцию clusterIcons.

То есть чтобы задумка получилась, нужно

1. Задать какое-то значение опции clusterIcons при создании кластеризатора

2. Задавать кластеру опцию с префиксом.

 

И то, и другое мы починим в ближайших релизах

 

Понял Вас! Спасибо за ответ! (+1)

Но только не совсем понял про опцию с префиксом.
Можно краткий пример? 

target.options.set({                        'preset': 'islands#invertedVioletClusterIcons',                   'clusterIcons': [{                       href: 'http://icons.iconarchive.com/icons/femfoyou/angry-birds/256/angry-bird-yellow-icon.png',       size: [32, 32],       offset: [-16, -16]                   }]                    });

Спасибо! Все работает! :-O

Но если c кластерами работать через geoQuery, то все равно не работает. У точек иконки меняются а у кластеров нет.

Приведите пример, тогда смогу посоветовать какой-то воркэраунд

Короче создаю кластеризатор, выбираю из него кластеры, заношу их в geoQuery, помещаю этот geoQuery на карту, смотрю когда объект из этого geoQuery попадает в область. 
В итоге - событие попадания в область есть, а иконки не меняются. Хотя у Placemark-ов в таком же случае все работает.

А можете дать ссылку на страницу или привести код?