Клуб API Карт

как скрыть/показать кластера по кнопке

andrey.v.lobanov
10 октября 2016, 22:03

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

есть такая проблемка:

на карту добавляю Clusterer с кучей точек (GeoObject с геометрией 'Point'). есть кнопка-переключатель (ymaps.control.Button), по которой хочется скрыть/показать все точки на карте (включая объединённые в кластера).

если делать без кластеризатора (просто добавляя в map.geoObjects), то всё легко получается проходом по map.geoObjects с выставлением options.set('visible', true или false) каждому объекту. но хотелось бы с кластеризатором то же самое уметь делать, есть какой-нибудь способ?

api 2.1.последняя

6 комментариев
И в myMap.geoObjects и в Clusterer не надо делать никаких проходов. Достаточно установить эту опцию только на коллекцию
myMap.geoObjects.options.set('visible', false);



Или
myClusterer.options.set('visible', false);


dimik,
я пробовал оба эти способа (оба с присутствием кластеризатора - или первый можно только без него?),
первый - работает до того момента, как сдвинуть или масштабировать карту, потом появляются какие-то новые точки, что-то пропадает, но вплоть до того, что карту нельзя больше двигать
второй - скрывает только кластера, но не одиночные точки (если такие есть при определенном масштабе), но при масштабировании и кластера появляются, хотя на мой взгляд должны быть скрыты
собственно потому и придумывал обходы всех объектов поодиночке
andrey.v.lobanov,
По поводу объектов в кластеризаторе, то что они отдельно отключаются это фича, нужно использовать префикс "geoObject"
clusterer.options
.set('visible', false)
.set('geoObjectVisible', false);


Отключение через коллекцию и кластризатор будет работать, только если вы не указываете visible на уровне элементов (меток) т.к. это более приоритетно и опция коллекции ее не перекроет


http://jsfiddle.net/taxtcjdy/
dimik,
спасибо, про префикс не подумал.



в вашем примере, если подвигать карту (так чтобы Москва вышла за пределы) или просто помасштабировать её, кластера снова появляются. я понимаю что вероятно тут происходит пересоздание кластеров, но мне как раз хотелось бы, чтобы они остались невидимыми и при таких действиях, возможно я непонятно описал свою задачу
andrey.v.lobanov,
 Да, кластеры пересоздаются при масштабировании, тогда только удалять кластеризатор с карты вместо visible: false
dimik,
спасибо, попробую так и сделать