如何删除使用apply方法加载的ol-mapbox样式图层

问题描述

由于大多数时候我都是通过使用addLayer()和removeLayer()OL方法添加删除图层的,所以我该如何类似地处理以ol-mapBox样式处理的矢量图层?以下角度代码不起作用,我在https://github.com/openlayers/ol-mapbox-style中找不到合适的方法

changetoVectorTileMapTilerEmbebedJson() {
  apply(
    this.map,'https://api.maptiler.com/maps/b3265770-0173-4415-909d-264ef9934779/style.json?key=blablabla'
  )
  .then(() => this.map.removeLayer(this.stamenTerrain))
  .then(() => this.map.removeLayer(this.stamenWaterColor))
  .then(() => this.map.removeLayer(this.osm))
  .then(() => this.map.removeLayer(this.topMap))
  .then(() => this.map.removeLayer(this.vectorTileMapTilerHillShades))
  .then(() => this.map.removeLayer(this.vectorTileMapTilerSatMediumbres))
  .then(() => this.map.removeLayer(this.vectorTileArcGISpbf))

}

谢谢

解决方法

您可以标识由ol-mapbox样式创建的图层,因为它们具有mapbox-source和mapbox-layers属性。如果您在任一图层上过滤了图层数组,则可以删除这些图层

this.map.getlayers().getArray().filter(
  layer => return layer.get('mapbox-source');
).forEach(
  layer => this.map.removeLayer(layer);
);

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...