Клуб API Карт

Пересоздание объекта

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

Использую ObjectManager для вывода объектов на карту. При попытке выполнить код:

mapObjectManager.remove(remobjs);   
mapObjectManager.add(newobjs);

сталкиваюсь с тем, что изменения на карту применяются только после взаимодействия с ней - подвигать, помасштабировать и т.п. А до выполнения действий с картой объект остается на месте, как будто он не был только что удален и воспроизведен заново. И да, есть особенность - новый объект имеет тот же id, что и удаленный, но раньше все работало как надо... И сейчас если выполнять код в такой манере:

mapObjectManager.remove(remobjs);
setTimeout(function(){
   mapObjectManager.add(newobjs);
}, 10);

то все работает как надо... Подскажите, пожалуйста, с чем это может быть связано и как с этим адекватно бороться? Буду весьма признателен...

3 комментария
Объекты с одинаковым id в рамках ObjectManager считаются одинаковыми. В частности, при последовательном удалении и добавлении такого объекта ничего не происходит.


Ставьте объекту другой id, если хотите, чтобы ObjectManager его гарантированно обновил. Таймауты ничего не гарантируют.
Sergey Konstantinov,
Но по итогу то обновляется, просто отображается после смены масштаба.... Может есть какие-то функции форсирующие выполенние обработчика этого событий?
watakot,
только удалять ОМ с карты и добавлять заново. Каждый инструмент создаётся для решения определённых задач. ОМ предназначен для оптимального отображения большого количества объектов. Но у него есть ограничения, объекты не могут менять своё местоположение, не поддерживается перетаскивание. Все это описано в документации. Мы не будем адаптировать ОМ для задач которых он изначально не предназначен