Клуб API Карт

API 2.0 Clusterer

r.timonin
17 мая 2012, 19:14

Добрый день,

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

вопрос: у меня для балуна задан свой стиль и параметров: заголовок и контент, для балуна нет, как мне сделать, чтобы в случае писанном выше контент балуна отображался корректно?

 

Спасибо.

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

Можно полностью переопределить содержимое балуна, и самостоятельно задать формат отображения данных о метках. Вот простой пример переопределения тела балуна - в нем списком выведутся данные геообъектов, заданные в поле clusterCaption.

(P.S. извините за адские отступы - я проиграла в войне с автоматическим форматированием...)

var myBalloonLayout =ymaps.templateLayoutFactory.createClass("", { 

build: function () { var parent = this.getParentElement(), content = "", geoObjects = this.getData().properties.get('geoObjects'); for (var i = 0, l = geoObjects.length; i < l; i++) { content += geoObjects[i].properties.get('clusterCaption') + "} parent.innerHTML = content;}});clusterer.options.set({clusterBalloonContentBodyLayout: myBalloonLayout});

 

Спасибо!

 

Если не сложно, можете сказать в описании какого класса есть свойство Caption?

здесь http://api.yandex.ru/maps/doc/jsapi/2.x/ref/reference/Clusterer.xml

есть только в примере, а что это и для чего это не сказано.

здесь нет http://api.yandex.ru/maps/doc/jsapi/2.x/ref/reference/Cluster.xml

 

Кластер - это разновидность геообъекта.

У каждого геообъекта есть данные, которые можно получить через поле properties.

Здесь clusterCaption - это просто одно из полей данных геообъекта, которое пытается обнаружить балун кластера.

Если вы для своих геообъектов будете задавать

placemark.properties.set('myCustomData', 'Какие-то данные");

то внтури макета балуна можно будет обращаться к полю myCustomData вместо clusterCaption.

в продолжение кластеров.

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

Т.е. слева clusterCaption, а справа шаблон метки с данными из properties для метки?

 

Спасибо.

Вам нужно немного поработать с css и html.

Функции апи вам тут уже не помогут.

Ну вот этим примером Вы меняете контент балуна, а как изменить фон балуна?

Вы имеете в виду - сделать балун полностью другого цвета?

Спасибо, я уже разобрался с этим вопросом.

Достаточно было изменить не много ваш код:

 
  
var myBalloonLayout =ymaps.templateLayoutFactory.createClass("", {  build: function () { var parent = this.getParentElement(), content = "", geoObjects = this.getData().properties.get('geoObjects' for (var i = 0, l = geoObjects.length; i < l; i++) { content += geoObjects[i].properties.get('clusterCaption') + "}/*Вот этом месте и описал как должен выглядеть балун кластера*/ parent.innerHTML =''+ content + ''
;}}clusterer.options.set({clusterBalloonLayout: myBalloonLayout /*И вот тут построенный лайоут применил к основному лайоуту балуна, а не к контенту*/}

 

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

http://kv.livewebmap.com/proba.php

Задайте опцию кластеризатору

cluster.options.set('clusterBalloonContentBodyLayout', 'cluster#balloonCarouselContent');

Еще у вас в коде 2 раза создается кластеризатор - один явно лишний. И в свойства меток выставляется опция clusterBalloonSidebarItemLayout - это тоже не будет работать.

clusterBalloonSidebarItemLayout - убрал, это я эксперементировал и забыл убрать )

Добавляю
cluster.options.set('clusterBalloonContentBodyLayout', 'cluster#balloonCarouselContent');

и вообще всё пропадает и не работает (

и не знаю, где два раза кластеризатор создаётся!

помогите разобраться


Надо ссылку с примером, где все пропадает. Так сложно сказать.