Как при клике на кластер получить данные меток в этом кластере yandex api?

Есть карта yandex maps api на карте отображаются метки, вывожу их в виде json

вот так:

{"type":"Feature","id":"15","id_d":"29","geometry":{"type":"Point","coordinates":["56.333355","43.954962"]},"properties":{"hintContent":"168 \u20bd"}}

также есть кластеры, в которых хранятся несколько меток

если метка одна то я просто через событие click получаю id_d(значение которое мне нужно), а не id метки(пример чуть ниже), и передаю его при клике через ajax в php обработчик, тоже самое мне нужно сделать если меток в одном здании несколько и там кластер. При клике на него я должен получить несколько значений.

objectManager.objects.events.add('click', function (e) {
        var objectId=e.get('objectId'),
                object = objectManager.objects.getById(objectId),
                id_d = object.id_d;

Вопрос такой: если отдалить карту, то появятся кластеры с сумой меток, при клике на них, произойдет увеличение карты до здания(максимальный масштаб), затем нужно еще раз по ней кликнуть чтобы посмотреть что там. Так вот как мне при клике на этот кластер получить все id_d которые находятся в этом кластере и передать в ajax.

Сейчас у меня просто какое то окошечко появляется в котором можно показать html блок, но мне нужно чтобы при клике просто передались id меток которые внутри этих меток и передать в ajax


Ответы (1 шт):

Автор решения: YaCor'

Как отслеживать клик на кластерах описано в соответствующем примере из песочницы Яндекс: https://yandex.ru/dev/maps/jsbox/2.1/object_manager_events

Вам остаётся получать нажатый кластер через getById и перебором содержащихся геообъектов выбирать нужные в них свойства:

        var cluster = objectManager.clusters.getById(e.get('objectId')),
            objects = cluster.properties.geoObjects;
        objects.forEach(function(element) {
            ...
        })

Будете ли вы их собирать в массив для обработки или отправлять через AJAX - вопрос последующей обработки.

→ Ссылка