kovalenkovpu
@kovalenkovpu
JS-dev

Как отображать большое количество полигонов через ObjectManager в Яндекс картах?

Есть задача отображения большого количества полигонов, до ~ 5 000 - 7 000 на вьюпорт.

В настоящий момент это реализовано через создание инстанса ObjectManager.

При изменении bounding box карты (изменение координат центра, изменение зума) - происходит получение массива данных с бэкенда, удаление предыдущего массива из ObjectManager (методы removeAll или remove), и повторное добавление данных в ObjectManager (метод add). Это необходимо, поскольку полигон с теми же координатами (или id) между запросами может менять свое отображение (заливка цветом например).

На кол-ве полигонов >= 3000 начинаются заметные проблемы с перформансом, даже на мощных машинах. В частности, очень заметна длительная работа метода ObjectManager.removeAll.

Другой подход (с загрузкой сразу всего объема доступных данных) применить не можем - объем большой, а проблемы с перформансом проявляются примерно такие же.

1. Есть ли оптимальный способ решения подобной задачи с отображением тысяч полигонов на карте? При условии, что получать данные мы хотим чанками. Чанк = то, что помещается во вьюпорт.

2. Можно ли использовать какой-то другой способ удаления объектов из ObjectManager, который будет работать быстрее? (пробовали удаление самого менеджера из maps.geoObjects, создание нового инстанса со свежим набором данных - появляются проблемы другого рода)
  • Вопрос задан
  • 153 просмотра
Пригласить эксперта
Ответы на вопрос 1
freeExec
@freeExec
Участник OpenStreetMap
Нет таких вундеркиндов, способных умозреть 7 тысяч полигонов разом. В лучшем случае он будет видеть сплошную заливку. Вот её и показывайте, объединив всё это в несколько полигонов, визуально похожих на исходные.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
29 мар. 2024, в 15:28
10000 руб./за проект
29 мар. 2024, в 15:11
50000 руб./за проект
29 мар. 2024, в 15:06
50000 руб./за проект