Клуб API Карт

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

watakot
7 сентября 2016, 11:59

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

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

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

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

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

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


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