arcgis jsapi接口入門系列(2):圖層基礎操做

 

//圖層相關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);
            });
        },
相關文章
相關標籤/搜索