ArcGIS For JavaScript API Dynamically create layer list(动态创建图层列表)

来源:互联网 发布:动画软件flash下载 编辑:程序博客网 时间:2024/06/05 22:41

描述:

此示例遍历所有的地图服务中的图层,并添加到每一个复选框到列表中,可以切换和关闭的图层。参考示例Toggle layer visibility.

 

buildLayerList()函数:遍历每一层,并把它添加一个HTML复选框。这将生成图层列表。保存在列表中的每一层的默认可见性。

updateLayerVisibility()函数:更新显示层

引用联接:http://help.arcgis.com/en/webapi/javascript/arcgis/help/jssamples_start.htm

在线演示:http://help.arcgis.com/en/webapi/javascript/arcgis/samples/map_dynamiclayerlist/index.html

Dojo在线帮助API:http://dojotoolkit.org/api/

ArcGIS For JavaScript API :http://help.arcgis.com/en/webapi/javascript/arcgis/index.html

代码如下:

[html] view plaincopyprint?
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">  
  2. <html lang="en">  
  3. <head>  
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">  
  5. <meta http-equiv="X-UA-Compatible" content="IE=7,IE=9" />  
  6. <!--The viewport meta tag is used to improve the presentation and behavior of the samples  on iOS devices-->  
  7. <meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no"/>  
  8. <title>Dynamically Create Map Service Layer List</title>  
  9. <link rel="stylesheet" type="text/css" href="http://serverapi.arcgisonline.com/jsapi/arcgis/3.2/js/dojo/dijit/themes/claro/claro.css" />  
  10. <link rel="stylesheet" type="text/css" href="http://serverapi.arcgisonline.com/jsapi/arcgis/3.2/js/esri/css/esri.css" />  
  11. <script type="text/javascript" src="http://serverapi.arcgisonline.com/jsapi/arcgis/?v=3.2"></script>  
  12. <script type="text/javascript">  
  13.       //类似导入包  
  14.       dojo.require("esri.map");  
  15.   
  16.       var layer, map, visible = [];     // 创建图层,地图和显示数组  
  17.       /**  
  18.         * 初始化函数  
  19.         */  
  20.       function init() {  
  21.         map = new esri.Map("map");  
  22.            
  23.         // 创建一个动态服务图层  
  24.         layer = new esri.layers.ArcGISDynamicMapServiceLayer("http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StatesCitiesRivers_USA/MapServer");  
  25.       
  26.         if (layer.loaded) {  
  27.             buildLayerList(layer);  
  28.         }  
  29.         else {  
  30.             dojo.connect(layer, "onLoad", buildLayerList);  
  31.         }  
  32.       }  
  33.   
  34.       /**  
  35.        * 构建图层函数  
  36.        */  
  37.        function buildLayerList(layer) {  
  38.         var items = dojo.map(   // 适用于回调到给定数组中的每个元素,并返回一个数组的结果。  
  39.             layer.layerInfos,   // 在服务返回可见的图层的数组,默认是可见的  
  40.             function(info,index){  
  41.                 if (info.defaultVisibility) {  
  42.                     visible.push(info.id);  // 将id编号放入数组中  
  43.                 }  
  44.                 return "<input type='checkbox' class='list_item'" + (info.defaultVisibility ? "checked=checked" : "") + "' id='" + info.id + "' onclick='updateLayerVisibility();' /><label for='" + info.id + "'>" + info.name + "</label>";  
  45.             }  
  46.         );  
  47.         dojo.byId("layer_list").innerHTML = items.join(' ');  
  48.         alert(items);  
  49.         layer.setVisibleLayers(visible,true);   // setVisibleLayers(ids, doNotRefresh?)  默认为false(及时刷新)  
  50.         map.addLayer(layer);    // 将图层加入到地图中  
  51.       }  
  52.   
  53.     /**  
  54.      * 更新图层显示  
  55.      */  
  56.       function updateLayerVisibility() {  
  57.         var inputs = dojo.query(".list_item"), input;   // 使用dojo.query()方法查询  
  58.       
  59.         visible = [];  
  60.   
  61.         // 遍历每一个文本框  
  62.         dojo.forEach(inputs,function(input){  
  63.           if (input.checked) {  
  64.               visible.push(input.id);   // 填充数组值  
  65.           }  
  66.           });  
  67.         // 如果它们中有任何一个不显示的图层将 设置数组为 -1  
  68.         if(visible.length === 0){  
  69.           visible.push(-1);  
  70.         }  
  71.         layer.setVisibleLayers(visible);      
  72.       }  
  73.   
  74.       dojo.addOnLoad(init);     // 初始化加载  
  75.     </script>  
  76. </head>  
  77.   
  78. <body>  
  79. 这个例子中加载一个  ArcGISDynamicMapServiceLayer.<br />  
  80. 它决定了层在地图服务中,并将其显示为复选框,可以用来切换他们的显示。  
  81. <br />  
  82. 图层列表 : <span id="layer_list"></span><br />  
  83. <br />  
  84. <div id="map" class="claro" style="width:600px; height:400px; border:1px solid #000;"></div>  
  85. </body>  
  86. </html>  

 

显示结果如下:


0 0
原创粉丝点击