Клуб API Карт

Как получить активный элемент в кластере. При выборе его из JS

Пост в архиве.

Уважаемые знатоки, внимание вопрос:

при выборе из js placemark, добавленного в кластер, очень хочется открыть балун кластера, в который оный (placemark) входит.

код открытия балуна: 

var objectState = Map.clusterer.getObjectState(placemark);

if (objectState.isClustered) {

    objectState.cluster.state.set('activeObject', placemark);

    Map.clusterer.balloon.open(objectState.cluster);

}

 

балун кластера полностью самописный, т.е. заменены clusterBalloonLayoutclusterBalloonContentLayout

html от contentLayout

 

<div class="map-order-list">

  <ul class="map-order-list-ul">

    {% for geoObject in properties.geoObjects %}

      <li data-placemarkid="{{ geoObject.properties.placemarkId }}">

        <span class="map-order-list-one">

          <span class="map-order-list-time">{{ geoObject.properties.balloonContentHeader|raw }}</span>

          <span class="ii ii-class comfort"></span>

        </span>

      </li>

    {% endfor %}

  </ul>

</div>

 

Далее, хочется обратиться к property того самого placemark, который был выбран.

Отсюда следует вопрос: как это сделать?



5 комментариев

Если добавить этот код

 

    setTimeout(function () {        var objectState = clusterer.getObjectState(geoObjects[0]);        if (objectState.isClustered) {            objectState.cluster.state.set('activeObject', geoObjects[0]);            clusterer.balloon.open(objectState.cluster);        }    }, 1000);

В пример кластеризатора из песочницы, то все работает.

Что у вас не получается?

Анатолий Новоселов
27 января 2016, 23:33

т.е. после

var objectState = clusterer.getObjectState(geoObjects[0]);if (objectState.isClustered) {  objectState.cluster.state.set('activeObject', geoObjects[0]);  clusterer.balloon.open(objectState.cluster);}
внутри шаблона clusterBalloonContentLayout можно обращаться к property выбранного placemark, как внутри балуна не кластеризованного placemark?
Всеволод Шмыров
27 января 2016, 23:33
>> Далее, хочется обратиться к property того самого placemark, который был выбран.
Добрый вечер. Не мог ли бы вы уточнить из какого макета? Если из clusterBalloonContentLayout, то обращение к полям геообъекта как в обычном балуне геообъекта. Просто через state, properties и options. То есть можно задать один и тот же макет для геообъекта и для clusterBalloonContentLayout.

А если через clusterBalloonLayout, все сложнее. Через язык шаблонов нельзя напрямую обратится к полям геообъекта, но это можно сделать в методах макета через this.getData().state.get('activeObject').properties ...
Анатолий Новоселов
27 января 2016, 23:33

Хм, странно, но typeof this.getData().state.get == undefined, как будто нет метода get (

Всеволод Шмыров
27 января 2016, 23:33
Странно. Могли бы вы привести ссылку с примером?