在 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
中删除
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。