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);
            });
        },