在 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 中删除
博客围绕JavaScript展开,介绍了操作不同概念的位置,数据变化时清除数据有两种方式,还提到可将相关内容保存为状态以便在页面任意位置使用。同时说明了两种清除数据方式的使用场景区别,即组件是否从页面消失决定优先使用哪种方式。
1582

被折叠的 条评论
为什么被折叠?



