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

相關文章
相關標籤/搜索