在項目中有個需求:根據圖層索引添加圖層緩存
看到這個需求一會兒想到 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