Есть задача отображения большого количества полигонов, до ~ 5 000 - 7 000 на вьюпорт.
В настоящий момент это реализовано через создание инстанса
ObjectManager.
При изменении bounding box карты (изменение координат центра, изменение зума) - происходит получение массива данных с бэкенда, удаление предыдущего массива из ObjectManager (методы
removeAll или
remove), и повторное добавление данных в ObjectManager (метод
add). Это необходимо, поскольку полигон с теми же координатами (или id) между запросами может менять свое отображение (заливка цветом например).
На кол-ве полигонов >= 3000 начинаются заметные проблемы с перформансом, даже на мощных машинах. В частности, очень заметна длительная работа метода ObjectManager.removeAll.
Другой подход (с загрузкой сразу всего объема доступных данных) применить не можем - объем большой, а проблемы с перформансом проявляются примерно такие же.
1. Есть ли оптимальный способ решения подобной задачи с отображением тысяч полигонов на карте? При условии, что получать данные мы хотим чанками. Чанк = то, что помещается во вьюпорт.
2. Можно ли использовать какой-то другой способ удаления объектов из ObjectManager, который будет работать быстрее? (пробовали удаление самого менеджера из
maps.geoObjects, создание нового инстанса со свежим набором данных - появляются проблемы другого рода)