前端多次改变openlayers中矢量瓦片的mapboxStyle样式,会导致浏览器内存泄漏,内存占用飙升,进而造成页面卡顿。
请问,在前端改变矢量瓦片图层的显隐和样式有什么比较高效率的方法?
if (layerArr && layerArr.length) {
let mvtLayerHelper = new MVTLayerHelper();
layerArr.forEach(layer => {
let layerType = layer.layerType;
if (layerType) {
let sourceName = layer.name.substring(layer.name.indexOf("@") + 1);
let mbStyle = styleObj[sourceName];
if (mbStyle) {
let changeStyle = mvtLayerHelper.changeMBStyle(mbStyle._mbStyle, layer);
mbStyle.setStyle(changeStyle);
map.getLayers().getArray().forEach((layer) => {
if (layerType.startsWith(layer.get('name'))) {
// layer.getSource().refresh();
layer.changed();
}
})
}
}
});