Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular OpenLayers 6.1.1矢量层内存泄漏_Angular_Openlayers - Fatal编程技术网

Angular OpenLayers 6.1.1矢量层内存泄漏

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

我目前在我的web应用程序中遇到一个问题,当将一个页面与地图保留在一起时,向量层会保留在内存中。目前,我的地图上有20个矢量图层,每次我离开并返回页面时,它都会保留这20个图层,并添加一组新的图层。这似乎是一个类似的问题,提出了在。这是我销毁图层的代码。是否有人在OpenLayers第6版测试版后遇到过这个问题

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