Angular OpenLayers 6.1.1矢量层内存泄漏
我目前在我的web应用程序中遇到一个问题,当将一个页面与地图保留在一起时,向量层会保留在内存中。目前,我的地图上有20个矢量图层,每次我离开并返回页面时,它都会保留这20个图层,并添加一组新的图层。这似乎是一个类似的问题,提出了在。这是我销毁图层的代码。是否有人在OpenLayers第6版测试版后遇到过这个问题Angular OpenLayers 6.1.1矢量层内存泄漏,angular,openlayers,Angular,Openlayers,我目前在我的web应用程序中遇到一个问题,当将一个页面与地图保留在一起时,向量层会保留在内存中。目前,我的地图上有20个矢量图层,每次我离开并返回页面时,它都会保留这20个图层,并添加一组新的图层。这似乎是一个类似的问题,提出了在。这是我销毁图层的代码。是否有人在OpenLayers第6版测试版后遇到过这个问题 const layers = this.map.getLayers(); while (layers.getLength() > 0) { const layer = lay
const layers = this.map.getLayers();
while (layers.getLength() > 0) {
const layer = layers.item(0);
if (layer.get('layerSourceType') === 'VECTOR') {
layer.getSource().clear();
}
layer.getRenderer().dispose();
layer.setSource(null);
this.map.removeLayer(layer);
}
this.map.setTarget(null);
this.map = null;
如果没有完整的代码或一把小提琴来说明,就很难给出准确的回答。然而,我得到了你的代码,可以保证它删除了所有的层 有几种方法可以做到这一点,你的方法就是其中之一。 您还可以获得如下特定图层:
var layerToRemove = this.map.getLayers().getArray()[0] // or any other layer index
this.map.removeLayer(layerToRemove)
但是你的代码也一样。您还可以将这些层存储在变量中并对其进行管理,这也可以执行相同的操作,如:
var layerToRemove = new TileLayer({ source: new TileSource() })
this.map.removeLayer(layerToRemove)
layerToRemove = null
但对我来说,问题似乎不在于图层删除本身,而在于创建图层的方式或删除图层的位置。下次尝试提供一个更完整的示例
干杯。如果没有完整的代码或小提琴来说明,很难给出准确的回答。然而,我得到了你的代码,可以保证它删除了所有的层 有几种方法可以做到这一点,你的方法就是其中之一。 您还可以获得如下特定图层:
var layerToRemove = this.map.getLayers().getArray()[0] // or any other layer index
this.map.removeLayer(layerToRemove)
但是你的代码也一样。您还可以将这些层存储在变量中并对其进行管理,这也可以执行相同的操作,如:
var layerToRemove = new TileLayer({ source: new TileSource() })
this.map.removeLayer(layerToRemove)
layerToRemove = null
但对我来说,问题似乎不在于图层删除本身,而在于创建图层的方式或删除图层的位置。下次尝试提供一个更完整的示例
干杯。你说的每次我离开并返回页面的确切含义是什么?您是关闭浏览器/相应选项卡还是在应用程序中导航?在应用程序中导航。您在地图的何处添加图层,例如,
ngOnInit
?我每次离开并返回页面的确切含义是什么?您是关闭浏览器/相应选项卡还是在应用程序中导航?在应用程序中导航。在何处将图层添加到地图,例如ngOnInit
?