map.forEachFeatureAtPixel不使用最新地图

时间:2019-04-25 00:50:54

标签: reactjs openlayers

我在React应用程序中有一个OpenLayers映射,其中具有矢量图块功能以及顶部的空矢量层。单击矢量切片要素时,在componentDidUpdate中,我会即时创建一个矢量要素进行编辑并将其添加到我的矢量图层源中。

这可行,但是我的选择交互第一次无法选择我的矢量功能。具体而言,在ol.interaction.Select.handleEvent中,map.forEachFeatureAtPixel仅找到现有的矢量图块特征,而不是新创建的矢量特征。下次单击矢量功能时,map.forEachFeatureAtPixel会正确找到它并将其选中。

我尝试使用

setTimeout(() => {
  selectInteraction.getFeatures().push(selectedFeature) 
}, 100)

vectorSource.add(vectorFeature)map.forEachFeatureAtPixel之后正确找到了我的矢量特征。

我的猜测是,即使出于某种原因,尽管我在vectorSource.addFeature(vectorFeature)处理程序中进行了select的操作,map还是无法看到它(尽管当我使用map获取矢量源时.getLayers,我可以看到自己添加的功能)。地图完全更新后,我是否可以监听并且可以致电select.getFeatures().push(vectorFeature)

1 个答案:

答案 0 :(得分:0)

是的,我在添加功能后通过调用map.renderSync()进行了修复。