Пусть существует кэш-набор GeoObject, а каждый пункт HTML-списка обладает атрибутом data-id, который соответствует определённому ключу в этом наборе. При наведении и уходе курсора с пункта считывается data-id, берётся экземпляр из кэша и проверяется его состояние по отношению к кластеризатору. Если объект не кластеризован, производятся манипуляции над его меткой. Иначе над кластером, в котором он состоит.
Работает подсветка меток, однако подсветка кластеров упрямится.
// Базовая иконка для всех кластеров
clusterer.options.set('preset', 'twirl#darkgreenClusterIcons');
// Подсветка точки на карте при наведении на пункт списка
//
list.on({
// Установить активную иконку метки/кластера
mouseenter: function(){
var id = $(this).attr('data-id');
// Объект кэширован ранее
if (cache[id])
{
// Получить состояние объекта из текущего кластеризатора
var state = clusterer.getObjectState(cache[id]);
// Работать с кластером, если объект кластеризован
if (state.isClustered)
{
// Не оказывает никакого эффекта, кластер иконку не меняет.
state.cluster.options.set('iconLayout', 'twirl#redClusterIcons');
// Ещё одна безуспешная попытка.
//state.cluster.options.set('preset', 'twirl#redClusterIcons');
//console.log(state.cluster.options);
}
// Работать с объектом (успешно справляется)
else
{
cache[id].options.set('preset', 'twirl#redDotIcon')
}
}
},
// Вернуть исходную иконку метки/кластера
mouseleave: function(){
var id = $(this).attr('data-id');
if (cache[id])
{
var state = clusterer.getObjectState(cache[id]);
// Работать с кластером, если объект кластеризован
if (state.isClustered)
{
// Зависит от подобного решения для mouseenter
// state.cluster.options.set('iconLayout', 'twirl#darkgreenClusterIcons');
}
// Работать с объектом (успешно справляется)
else
{
cache[id].options.set('preset', 'twirl#darkgreenIcon')
}
}
}
}, '.co-item');
Заранее спасибо