//图层相关demo layerFun: function () { //获取地图的所有图层(不包括的图层类型:底图图层(basemaps)) let layers = this.map.layers; //获取地图的所有图层(包括所有图层类型) let alllayers = this.map.allLayers; //PS:以上的类型都是Collection<Layer>(看起来像java的泛型list),不是js原生的东西,详细用法请看arcgis jsapi官方文档 //传统遍历方法 for (let i = 0; i < layers.length; i++) { let layer3 = layers.getItemAt(i); } //Collection支持的通用查询方法,用法类似lambda表达式 //根据条件查询指定图层(只返回一个) var layer2 = layers.find(function (layer) { return layer.title === "US Counties"; }); //根据条件查询指定图层(返回多个,类型也是Collection) var layers4 = layers.filter(function (layer) { return layer.title === "US Counties"; }); //Collection转js array let layers5 = layers.toArray(); //根据图层id获取图层 let layer1 = this.map.findLayerById("www"); //根据索引获取图层 let layer = layers.getItemAt(0); //获取图层id //PS:图层id是图层的唯一标识,string类型。在新建图层时可以指定,如果不指定会生成随机数,以保证唯一 let layerId = layer.id; //图层范围 let fullExtent = layer.fullExtent; //图层显示比例尺范围 let maxScale = layer.maxScale; let minScale = layer.minScale; //图层显示的透明度,值为0-1,1为不透明 let opacity = layer.opacity; //图层标题 let title = layer.title; //图层类型 let type = layer.type; //图层是否显示,类型bool,同时可设置图层是否显示 let visible = layer.visible; //新建图层并把图层添加到地图 //此处以图形图层(GraphicsLayer)为例 layer = new this.apiInstance.GraphicsLayer({ //空间参考,一般要跟地图的一样 spatialReference: this.mapView.spatialReference, }); //图层添加到地图 this.map.add(layer); //添加图层时也可以指定图层索引,默认会把图层添加到最后一位,也就是索引的最大值,图层索引越大越在上面,上面的图层会挡住下面的 //另外在添加图层后也可以改变图层索引,是Map的reorder方法,具体请看官方文档 this.map.add(layer, 0); //从地图删除图层 this.map.remove(layer1); //从地图删除所有图层 this.map.removeAll(); //地图的图层事件监听 //PS:原则上每个map只监听一次 alllayers.on("change", function (event) { //添加图层事件 console.log("Layer added: ", event.added); //删除图层事件 console.log("Layer removed: ", event.removed); //移动图层(顺序)事件 console.log("Layer moved: ", event.moved); }); },