Клуб API Карт

Найдено на тему «макет кластера»:
Как вывести объект приходящий в конструктор ymaps.templateLayoutFactory.createClass?
light-exo
21 июня 2017, 10:34

Пытаюсь сделать кастомный балун для кластера, но проблема в том, что туда ничего не приходит если брать пример из документации, при том, что для стандартных просто запихиваю в body и вывожу верстку, и всё работает. 

В частности:

var clusterContentLayout = ymaps.templateLayoutFactory.createClass([
        '<div class="proposal__item"> \
            <div class="balloon__overlay {{ properties.geoObjects[0].properties.load }}"></div> \
            <div class="MapBalloon_Header"> \
              <div class="MapBalloon_HeaderTitle"> {{ properties.geoObjects[0].properties.title }} </div> \
            </div> \
            <div class="MapBalloon_Body" style="height: auto"> \
              {% for geoObject in properties.geoObjects %} \
              <div class="MapBalloon_Item"> \
                <div class="MapBalloon_ItemImg" style="background-image: url({{  geoObject.properties.photo }})"> \
                  <a href="{{  geoObject.properties.url }}"> \
                    <img src="{{  geoObject.properties.photo }}" alt="{{  geoObject.properties.title }}" /> \
                  </a> \
                </div> \
                <div class="MapBalloon_ItemBody"> \
                  <div class="MapBalloon_ItemBodyType">{{  geoObject.properties.type }}</div> \
                  <div class="MapBalloon_ItemBodyInfo"> \
                    <a href="{{  geoObject.properties.url }}">{% if  geoObject.properties.rooms %} {{  geoObject.properties.rooms }}-к {% endif %}{{  geoObject.properties.type }} {% if  geoObject.properties.area %}{{  geoObject.properties.area }} м<sup>2</sup>{% endif %}{% if  geoObject.properties.area %} {{  geoObject.properties.floors }} эт.{% endif %}</a> \
                  </div> \
                  <div class="MapBalloon_ItemBodyPrice">{{  geoObject.properties.price }}<span class="roub-sign">&nbsp;{{  geoObject.properties.currency }}</span></div> \
                </div> \
              </div> \
              {% endfor %} \
            </div> \
          </div>'
      ].join(''));

Возможно, потому что у меня динамическая загрузка аяксом:

...
var objectState = objectManager.getObjectState(objectId);
              if (!objectState.isClustered) {
                object.properties.load = '';
                objectManager.objects.balloon.open(objectId);
              } else {
                objectManager.clusters.balloon.open(objectState.cluster.id);
              }
...
objectManager.objects.events.add('click', function (e) {
        e.preventDefault();
        var objectId = e.get('objectId');
        setBalloonData(objectId);
      });
      objectManager.clusters.events.add('click', function (e) {
        e.preventDefault();
        var objectId = e.get('objectId');
      });
      //Monitor cluster changes
      var activeObjectMonitor = new ymaps.Monitor(objectManager.clusters.state);
      activeObjectMonitor.add('activeObject', function () {
  			var objectId = activeObjectMonitor.get('activeObject').id;
        setBalloonData(objectId);
  		});

6 комментариев
макет кластера
ObjectManager, содержимое макета кластера
denis.ezhkov
6 сентября 2016, 17:02

Здравствуйте. 

Не могу разобраться, как задать содержимое макета кластера на основе информации входящих в него точек.

Все примеры, которые нашел, используют Clusterer и перекрытие некоторых методов. В моем случае я использую ObjectManager, clusterize:true и геообъекты вида 

{
  type: 'Feature',
  id: 123,
  geometry: {
    type: 'Point',
    coordinates: coords
  },
  properties: {
    iconContent: 123,
  },
  options: {
    iconLayout: pointLayout,
  }
}

На основе iconContent геообъектов, входящих в кластер, мне нужно формировать содержимое иконки кластера. Как это правильно сделать?

Спасибо

7 комментариев
ObjectManager,шаблоны,Кластер,макет кластера