//圖層相關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); }); },