之前想做个获取图层信息的功能,但找到的资料做起来特别麻烦,今天看到LayerInfo这个类时,发现它有name,layerid等属性,所以想着从LayerInfos中遍历可以得到,并将得到的结果放入下拉列表框。
代码如下:
1 <?xml version="1.0" encoding="utf-8"?> 2 <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 3 xmlns:s="library://ns.adobe.com/flex/spark" 4 xmlns:mx="library://ns.adobe.com/flex/mx" 5 minWidth="955" minHeight="600" xmlns:esri="http://www.esri.com/2008/ags" 6 initialize="init()" > 7 <fx:Script> 8 <![CDATA[ 9 import com.esri.ags.events.LayerEvent; 10 import com.esri.ags.layers.supportClasses.LayerInfo; 11 12 13 //初始化时图层加入监听 14 private function init():void 15 { 16 layer.addEventListener(LayerEvent.LOAD,LayerLoad); 17 } 18 //监听响应函数 19 private function LayerLoad(event:LayerEvent):void 20 { 21 //获取图层信息 22 var layerinfos:Array=layer.layerInfos; 23 //定义一个图层信息数据集提供给Layerlist的dataProvider 24 var layers:Array=new Array(); 25 //定义一个图层信息 26 var layerinfo:LayerInfo; 27 //遍历图层信息,将图层信息中的name和layerid放入Layers中 28 for(var i:int=0;i<layer.layerInfos.length;i++) 29 { 30 layerinfo=layerinfos[i] as LayerInfo; 31 layers.push({label:layerinfo.name,id:layerinfo.layerId}); 32 } 33 //layers赋给layerlist 34 layerlist.dataProvider=layers; 35 } 36 ]]> 37 </fx:Script> 38 <esri:Map id="mymap" width="100%" height="100%"> 39 <esri:ArcGISDynamicMapServiceLayer id="layer" 40 url="http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StatesCitiesRivers_USA/MapServer"/> 41 </esri:Map> 42 <mx:ComboBox id="layerlist" y="41" right="114" width="133" height="19"/> 43 <s:Label y="19" right="154" width="52" height="14" text="图层选择"/> 44 </s:Application>