Клуб API Карт

Темизация балуна кластера

w1ldzer0
21 июня 2012, 08:45

Добрый день.

Пытаюсь темизировать балун для кластера.

Создают кластер:

clusterer = new ymaps.Clusterer({

    clusterBalloonLayout: 'wifi#clusterBalloon',

})

 

Определяю лейаут:

clusterBalloonLayout = ymaps.templateLayoutFactory.createClass(

    '<div class="b-simple-balloon-layout">' +

    '<div class="content">' + 

    '$[options.content]' +

    '</div><div class=\"close\"></div><div class=\"tail\"></div></div>',

    {

        build: function(){this.constructor.superclass.build.call(this)}

    }

)

ymaps.layout.storage.add('wifi#clusterBalloon', clusterBalloonLayout);

 

Вроде всё отлично. Но по нажатию на иконку закрытия - балун не закрывается.

Понятно, что нужно повешать на событие клика сluster.balloon.close(). Но как добраться до cluster.balloon - не могу понять.

Подскажите, пожалуйста, как поступить.

4 комментария
Подписаться на комментарии к посту

Да, ссылка на кластер сейчас в лейаут балуна не приходит - это недочет, мы его исправим в ближайших релизах.

А пока в качестве временного решения могу посоветовать следущее.

Сейчас в макеты балуна кластера передаются данные кластера. Можно в эти данные помещать ссылку на кластер.

clusterer.createCluster = function (center, geoObjects) {

    var cluster = clusterer.prototype.createCluster.call(this, center, geoObjects);

    cluster.properties.set('cluster', cluster);

    return cluster;

}

 

Тогда внутри макета можно будет получить ссылку на кластер

this.getData().properties.get('cluster')

Я понимаю, что это неизящное решение - в будущих релизах это будет делаться автоматически.

Спасибо. Получилось. clusterer.prototype - undefined. Изменил на clusterer.__proto__ не знаю на сколько это правильно, но работает.

Да, извините, это конечно же моя неточность

ymaps.Clusterer.prototype.createCluster....

Что-то я не понимаю... Почему у вас работает так, а у меня лэйаут балуна меняется через clusterer = new ymaps.Clusterer({balloonLayout: 'wifi#clusterBalloon'})

а не через clusterBalloonLayout


И зачем вы переопределяете build  в определении лэйаута?