Клуб API Карт

objectManager.objects.overlays.getLength() после обработки setFilter()

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

Добрый день.

Собственно вопрос "Как узнать количество элементов после применения setFilter()"?

Сделал пример: https://jsfiddle.net/833xrh9t/4/

Вроде должны были посчитать оверлеи, но вот беда, функция то асинхронная на сколько я понимаю (я про setFilter()), поэтому отображается старое количество элементов.


Во всяком случае код:

 

objectManager.setFilter(sFilters);

console.log(objectManager.objects.overlays.getLength() + ' from ' + objectManager.objects.getLength());



у меня показывает старые значения (т.е. setFilter() еще не отработал?).


А setFilter().then(function...) у меня выдаёт ошибку (objectManager.setFilter(...).then is not a function).
Может нужен Promise?

4 комментария
Неужели никто не сталкивался? Не хочется ведь setTimeout ставить, ребят!
Sergey Konstantinov
6 июля 2016, 15:13
У коллекции overlays есть события add/remove, нужно подписываться на них.
https://tech.yandex.ru/maps/doc/jsapi/2.1/ref/reference/objectManager.OverlayCollection-docpage/#events-summary
Sergey Konstantinov,
Спасибо, буду пробовать!
xsmilefacex,
получилось? :)