setVisibleLayers

ArcGISDynamicMapServiceLayer 中 的 setVisibleLayers 函數


例子功能

1. 顯示一個底圖

2. 疊加一個專題圖,專題圖下面有 很多個空間圖層。

3.在界面上動態顯示 空間圖層的 名稱和複選框,點擊複選框,關閉或者顯示 對應圖層


  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">  
  2.   
  3. <html>  
  4.   
  5. <head>  
  6. <link rel="stylesheet" href="http://serverapi.arcgisonline.com/jsapi/arcgis/3.5/js/esri/css/esri.css"><script src="http://serverapi.arcgisonline.com/jsapi/arcgis/3.5/"></script>  
  7. <script type="text/javascript">  
  8.     dojo.require("esri.map");  
  9.       
  10.     var map,visible = [];  
  11.     var layer , layer2;  
  12.   
  13.     function init() {  
  14.       dojo.require("esri.layers.FeatureLayer");  
  15.       dojo.style(dojo.byId("map"), { width: dojo.contentBox("map").w + "px", height: (esri.documentBox.h - dojo.contentBox("loginTable").h - 40) + "px" });  
  16.         
  17.       map = new esri.Map("map");  
  18.         
  19.         
  20.       layer = new esri.layers.ArcGISTiledMapServiceLayer("http://1.1.1.1/arcgis/rest/services/V32/androidbase/MapServer");  
  21.       map.addLayer(layer);  
  22.   
  23.       layer2 = new esri.layers.ArcGISDynamicMapServiceLayer("http://1.1.1.1/arcgis/rest/services/V32/androidtraffic/MapServer");  
  24.       
  25.   
  26.       if (layer2.loaded) {  
  27.           buildLayerList(layer2);  
  28.       }  
  29.       else {  
  30.           dojo.connect(layer2, "onLoad", buildLayerList);  
  31.       }  
  32.     }  
  33.   
  34.     function buildLayerList(layer) {  
  35.         var infos = layer.layerInfos, info;  
  36.         var items = [];  
  37.         console.debug(infos.length);  
  38.         for (var i=0il=infos.length; i<il; i++) {  
  39.           info = infos[i];  
  40.           console.debug(info);  
  41.           if (info.defaultVisibility) {  
  42.             visible.push(info.id);  
  43.             console.debug("visible  is "+visible);  
  44.           }  
  45.           items[i] = "<input type='checkbox' class='list_item' checked='" + (info.defaultVisibility ? "checked" : "") + "' id='" + info.id + "' onclick='updateLayerVisibility();' /><label for='" + info.id + "'>" + info.name + "</label>";  
  46.         }  
  47.         dojo.byId("layer_list").innerHTML = items.join();  
  48.         console.debug (items);  
  49.         layer2.setVisibleLayers(visible);  
  50.         map.addLayer(layer2);  
  51.     }  
  52.   
  53.     function updateLayerVisibility() {  
  54.         var inputs = dojo.query(".list_item"), input;  
  55.         visible = [];  
  56.         for (var i=0il=inputs.length; i<il; i++) {  
  57.           if (inputs[i].checked) {  
  58.             visible.push(inputs[i].id);  
  59.           }  
  60.         }  
  61.         // 這段代碼是在所有的圖層都不需要顯示的時候,要把這個參數至成-1 ,否則如果爲空得數組的話,會全部都顯示了。  
  62.         if(visible.length === 0){  
  63.             visible.push(-1);  
  64.         }  
  65.         layer2.setVisibleLayers(visible);  
  66.     }  
  67.   
  68.   
  69.     dojo.addOnLoad(init);  
  70.   </script>  
  71. </head>  
  72.   
  73. <body class="tundra">  
  74.   <table id="loginTable" width="100%">  
  75.     <br />  
  76.     Layer List : <span id="layer_list"></span><br />  
  77.     <br />  
  78.   </table>    
  79.   <div id="map" style="margin-left:10px;margin-right:10px;width:97%;border:1px solid #000;"></div>  
  80.   <div>  
  81.   </div>  
  82.   
  83. </body>  
  84.   
  85. </html> 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章