setVisibleLayers

本文介绍如何使用ArcGIS API实现地图中图层的动态显示与隐藏功能。通过JavaScript编程,可以创建一个用户界面来控制ArcGISDynamicMapServiceLayer中的各图层可见性,并在用户勾选时即时更新地图显示。
摘要由CSDN通过智能技术生成

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> 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值