Клуб API Карт

Выбрать объект при клике внутри balloonContent

Krem-Ilia
23 августа 2016, 19:19

Имеется следующее: множество меток на карте, кластеризация включена.

В случае, когда две и более метки приходятся по одному адресу, при клике случается следующее:

Это я сделал путём добавления нужного balloonContent и balloonCaption в properties меток.

В объектах objectManager-а у меня повешен клик:

objectManager.objects.events.add('click', event => { ... }) // - вот так

Вопрос такой - как этот же клик применить к кликам по элементам меню слева на скриншоте? То есть чтобы можно было не только просматривать информацию, но и выбрать элемент. Есть ли какой-то простой способ это сделать с помощью какой-нибудь опции-колбека, куда сразу приходит метка, например?

И ещё у меня попутно возник вопрос, есть такие свойства у кластера, как clusterIcons и clusterIconContentLayout, например. Если смотреть документацию, в том числе тут: https://tech.yandex.ru/maps/doc/jsapi/2.1/ref/reference/Clusterer-docpage/, то они есть в примерах, но как будто не задокументированы. Есть где-то место, где можно увидеть на них документацию?

6 комментариев
Подписаться на комментарии к посту
1. У метки-кластера есть поле state При смене активного элемента в этом списке меняется state.activeObject, вы можете подписаться на это изменение state.events.add('change', ...) (проще всего это сделать в методе build макета) и генерить сами событие клик, на активном элементе 
2. https://tech.yandex.ru/maps/doc/jsapi/2.1/ref/reference/ClusterPlacemark-docpage/
dimik,
1. Не очень понял. У меня есть state.events в моём инстансе ymaps.ObjectManager, но этот change не тригерится при кликах на "Метка один" и "Метка два" из моего скриншота.


2. Кажется в этой статье тоже нет непосредственной документации, тоже встречается в примерах.
Krem-Ilia,
У меня событие кидается


objectManager.clusters.state.events.add('change', function () {
console.log('change');
})
dimik,
 теперь понял, благодарю, я думал просто objectManager.state.
У меня только теперь остался вопрос, нормально ли обращаться `event.originalEvent.target._data.activeObject` или это некорректно, но это не так принципиально, спасибо за помощь.

Krem-Ilia,
нет, не надо обращаться к педальным полям, это не будет работать в минифицированной продакшн-версии. Используйте документированные интерфейсы
event.get('target').get('activeObject')
dimik,
 спасибо!