map.forEachFeatureAtPixel не использует последнюю карту - PullRequest
0 голосов
/ 25 апреля 2019

У меня есть карта 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)?

1 Ответ

0 голосов
/ 25 апреля 2019

Да, я исправил это, позвонив map.renderSync() после добавления функции.

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