arcgis jsapi介面入門系列(2):圖層基礎操作
阿新 • • 發佈:2018-11-29
//圖層相關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); }); },