Как кастомизировать отрисовку кластеров при отборе jQuery.getJSON, и использовании ".clusterize()"

Рейтинг: 0Ответов: 1Опубликовано: 25.05.2023

Ребята, вопрос такой: есть у меня большая карта с тысячей меток. Гружу из json в objectManager. objectManager я кастомизировал, и он отрисовывает кластера "пироги" с нужной мне палитрой. Тут всё отлично. Но сейчас понадобилось разделить город на полигоны, чтобы при выборе полигона - показывались только метки из этого полигона. Сделал выпадающий список с полигонами, и, при выборе полигона, я делаю так - очистку карты myMap.geoObjects.removeAll();. jQuery.getJSON отфильтровывает метки через var objectsInPolygon=ymaps.geoQuery(json).searchIntersect(myPolygon). Заново отрисовываю только нужные мне метки myMap.geoObjects.add(objectsInPolygon);. Но метки не объединены в кластер. Из песочницы брал пример, где есть myMap.geoObjects.add(objectsInPolygon.clusterize()) но он делает стандартные кластеры. Как мне использовать уже созданную модель для кластеров, которую я использую до применения фильтрации? Я пробовал засунуть сюда objectManager, но не получается докрутить. Делал так: objectManager.add(objectsInPolygon); myMap.geoObjects.add(objectManager); - не работает.

Ответы

▲ 1

Ребята, я разобрался. Дело в том, что ymaps.geoQuery(json).searchIntersect(myPolygon). возвращает GeoQueryResult (результат выборки). И просто objectManager.add тут не работает. Вопрос решается, если пробежаться по каждому элементу выборки посредством

objectsInPolygon.each(function(pm, index) { objectManager.add({ type: 'Feature', id: index, geometry: { type: pm.geometry.getType(), coordinates: pm.geometry.getCoordinates() }, properties: pm.properties.getAll(), options: pm.options.getAll() }); });