在 OpenLayers
中,各个概念的程序是 map
-> layer
-> source
-> feature
-> geometry
-> coordinates
你要操作 layer
的话是在 map
上,操作 source
是在 layer
上,顺次类推
当数据变动时,就须要将之前的数据革除掉
在 OpenLayers
中革除数据有两种形式:
- 用
removeFeature
- 用
removeLayer
removeFeature
removeFeature
办法是在 source
上,所以先要获取到 source
在 react
中,你能够将 source
保留为状态,就能够在页面中任意地位应用 source
,就不须要再通过 layer.getSource
形式获取 source
source.getFeatures().forEach((feature) => source.removeFeature(feature));
source.forEachFeature((feature) => source.removeFeature(feature));
removeLayer
removeLayer
办法是在 map
上,应用比较简单
在 react
中要留神的,layer
也要保留到状态中,否则 addLayer(layer)
和 removeLayer(layer)
这两个 layer
可能不是同一个 layer
map.removeLayer(layer);
removeFeature
和 removeLayer
应用场景
他们应用场景的区别是
removeFeature
在layer
不会变动的场景中应用removeLayer
在layer
会变动的场景中应用
也就是说以后组件不会从页面中隐没,那你在革除数据时优先应用 removeFeature
,否则应用 removeLayer
从页面中隐没是指组件之间相互切换,不显示的组件会从 dom
中删除