ArcGIS 切片与矢量图图层顺序问题

在项目中有个需求:根据图层索引添加图层缓存

看到这个需求一会儿想到 map.addLayer(layer,index?) 接口测试

可是问题出现了,我切片图加载顺序在矢量图以后就不行!spa

        map = new Map("map");
        //加载矢量服务图层
        var dynamic = new ArcGISDynamicMapServiceLayer("");
        //加载切片服务图层
        var tiled = new ArcGISTiledMapServiceLayer(""); 
        //先添加动态地图服务
        map.addLayer(dynamic);
        //再添加切片地图服务
        map.addLayer(tiled);

可是反过来,先加载切片底图,后加载矢量图就没有问题3d

        map = new Map("map");
        //加载矢量服务图层
        var dynamic = new ArcGISDynamicMapServiceLayer("");
        //加载切片服务图层
        var tiled = new ArcGISTiledMapServiceLayer(""); 
        //先添加切片地图服务
        map.addLayer(tiled);
        //后添加动态地图服务
        map.addLayer(dynamic);

这究竟什么缘由呢?偶然间查到以下一段话code

 个人理解是Map会根据第一个添加的图层设立参考,可是缓存图层不能动态转换参考。因此有缓存图层的必须将缓存图层做为底图,第一个加载到Map里。blog

 是否底图加载再最底层就行?再来看看 map.addLayer(layer,index?) 的表现索引

            //情形一
            //加载正常,切片在矢量图下方
            map.addLayer(tiled, 0);
            map.addLayer(dynamic, 1);

            //情形二
            //加载正常,切片在矢量图上方
            map.addLayer(tiled, 1);
            map.addLayer(dynamic, 0);

            //情形三
            //加载不正常,切片图不出现
            map.addLayer(dynamic, 0);
            map.addLayer(tiled, 1);

            //情形四
            //加载不正常,切片图不出现
            map.addLayer(dynamic, 1);
            map.addLayer(tiled, 0);

通过上面的测试发现,情形三和四都先加载了矢量图,即便矢量图放在最底层也没用。接口

故加载切片图和矢量图时,必须先加载切片,再加载其余矢量,而并不是把切片放最底层就能够的。class

相关文章
相关标签/搜索