У меня есть карта OpenLayers внутри приложения React с векторными элементами мозаики, а также с пустым векторным слоем сверху.Когда я щелкаю векторный элемент мозаики, в componentDidUpdate
я на лету создаю векторный объект для редактирования и добавляю его в свой источник векторного слоя.
Это работает, но в моем взаимодействии выбора не удается выбрать векторную функцию в первый раз.В частности, в ol.interaction.Select.handleEvent
, map.forEachFeatureAtPixel
находит только существующий векторный элемент мозаики, а не только что созданный векторный объект.В следующий раз, когда я щелкну векторную функцию, map.forEachFeatureAtPixel
правильно найдет ее, и она будет выделена.
Я пытался использовать
setTimeout(() => {
selectInteraction.getFeatures().push(selectedFeature)
}, 100)
после того, как vectorSource.add(vectorFeature)
и map.forEachFeatureAtPixel
правильно нашли мой векторfeature.
Я предполагаю, что, хотя я и делаю vectorSource.addFeature(vectorFeature)
, по какой-то причине в обработчике select
он не виден map
как-то (хотя, когда я получаю векторный источник, используя map.getLayers, я вижу свою добавленную функцию).Могу ли я прослушать событие, когда карта полностью обновится, и я могу позвонить select.getFeatures().push(vectorFeature)
?