Клуб API Карт

Окончание кластеризации

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

Подскажите пожалуйста  как отследить окончание кластеризации объектов(objectManager) на стороне клиента ? Чтобы выводить что-то аля "загрузка данных" и не позволять пользователю менять объекты, пока они "сбиваются" в кластеры.

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

Объекты кластеризуются синхронно. Там нечего отслеживать

Ну может не так выразился, в общем мне нужно чтобы пока грузится крта, отрисовываюся метки и кластеры - отображалась заглушка "Загрузка". И она убиралась как только все готово... Как это сделать?

На http://map.cian.ru/ это ведь как-то реализовано...?

пока загружаются данные показывайте прелоадер

а как это сделать? С началом загрузки все ясно, а как остследить её окончание?

Как вы загружаете данные и добавляете их в ОМ?

Загружаю

objectManager = new ymaps.LoadingObjectManager('http://***/map/data.php?bbox=%b&zoom=%z'+getqueryParms()

...

myMap.geoObjects.add(objectManager);

 

обновляю также только очистив перед этим карту

objectManager.objects.removeAll();
myMap.geoObjects.removeAll();

Да, сейчас у LOM нет соотв. события окончания загрузки. Я передам ваше пожелание разработчикам

Понятно значит почему я его не нашел;-(

Ну а пока над этим будут биться разработчики - может быть есть какой то альтернативный выход?

Например как-то плясать не от LOMа а от карты - как я изначально предположил может быть можно как-то зацепиться за отрисовку кластеров или меток на карте.

Может как то можно отловить событие окончания нанесения меток на карту?

Можно попробовать слушать событие добавления объекта в objectManager.objects

 

https://tech.yandex.ru/maps/doc/jsapi/2.1/ref/reference/objectManager.ObjectCollection-docpage/#event-add

 

Пробовал - не работает

objectManager.ObjectCollection.events.add('add', function (e) {
    
                alert();
            });

А так заработало:

objectManager.objects.events.add('add', function (e) {

только теперь новая проблема, как быть если обновляется область карты на которой нет объектов? :-(

в голову только settimeout приходит))

В качестве временного решения сойдет