Уважаемые, может кто сталкивался с таким вопросом?
Есть карта с кластеризатором. Сбоку -- список названий точек, размещенных на этой карте.
При клике по ссылке активируется соответствующий баллун. Но для точек, находящихся в данный момент в кластере баллун не активируется. Как сделать так, чтобы при клике по ссылке с названием точки, находящейся в кластере происходило увеличение карты до раскрытия кластера и выводился баллун?
Вот как у меня это реализовано:
data -- это массив с точками, полученный по запросу с сервера
myMap -- объект карты.
var $points = [];
var $ul = $('<ul class="cat-map-item-list"></ul>');
for(var count = 0; count < data.length; count++){
$points[count] = addListItem($ul, data[count]);
}
$ul.appendTo('#cat-list-box');
addPointList(myMap, $points);
// Здесь создаем точку и создаем элемент списка. Вешаем на него прерывание по клику
function addListItem($ul, data){
var $li = $("<li><a href='#' id='map-list-item-" + data.id + "' data-id='" + data.id + "' class='switch-off'>" + data.properties.hintContent + "</a></li>");
var $newPoint = new ymaps.GeoObject(data);
// Обработчик клика по ссылке
$li.appendTo($ul).find('a').click(function(){
if($(this).hasClass('switch-on')){
$(this).removeClass('switch-on').addClass('switch-off');
$newPoint.balloon.close();
}else{
$('.switch-on').removeClass('switch-on').addClass('switch-off');
$(this).removeClass('switch-off').addClass('switch-on');
$newPoint.balloon.open();
}
});
return $newPoint
}
// А тут создаем кластеризатор и добавляем в него точки
function addPointList(myMap, $points){
var clusterer = new ymaps.Clusterer({clusterDisableClickZoom: false});
clusterer.add($points);
myMap.geoObjects.add(clusterer);
}