Фильтрация оверлеев OpenLayers в React - PullRequest
0 голосов
/ 31 мая 2019

У меня есть карта OpenLayers (5.3.2) в приложении React с набором фильтров для фильтрации местоположений, отображаемых на карте. Работает нормально, пока я не добавлю всплывающие окна с информацией о маркерах.

Всплывающие окна добавляются в DOM рядом с картой:

<Map locations={filteredLocations} />
<Popups locations={filteredLocations} />

Затем они устанавливаются как новые наложения на карте OL:

new Overlay({
    element: document.getElementById(`openlayers-popup-${location.id}`)
});

Что заставляет их перемещаться внутри карты и ol-overlay-container в DOM. Карта и всплывающие окна работают на этом этапе. Если я пытаюсь выполнить какую-либо фильтрацию, которая изменяет содержимое filteredLocations и вызывает обновление всплывающих окон, я получаю эту ошибку:

Uncaught DOMException: Failed to execute 'removeChild' on 'Node': The node to be removed is not a child of this node

Я подозреваю, что это потому, что React больше не может найти всплывающие окна в том месте, в котором они изначально отображались? Как лучше всего с этим справиться? Клонирование всплывающих окон и использование их на оверлее вместо ощущения хака?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...