加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ArcGIS Server动态读取图层样式(Flex版)

发布时间:2020-12-15 03:33:34 所属栏目:百科 来源:网络整理
导读:原址:http://virgoooos.iteye.com/blog/794991 在ArcGIS10的rest接口已经提供给我们动态读取图层样式的接口了。? 其实当我们在访问ArcGIS Server10的时候,会发现每一个服务界面提供给我们比以前更多的信息了,这些信息只要你可以看到,我们是都有接口读取

原址:http://virgoooos.iteye.com/blog/794991

在ArcGIS10的rest接口已经提供给我们动态读取图层样式的接口了。?

其实当我们在访问ArcGIS Server10的时候,会发现每一个服务界面提供给我们比以前更多的信息了,这些信息只要你可以看到,我们是都有接口读取到的。?

以ESRI官网的服务为例:?
Java代码??

收藏代码

  1. http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/BloomfieldHillsMichigan/Parcels/MapServer??

界面如下图:?


如果细心对比的话,会发现比前几个版本的信息量多了很多,例如:Tables?
再看一下对每个图层的信息描述,如下图:?

?
这里会很明显的发现drawinfo这个属性,记录着图层的图层样式,动态获取图层样式就要靠drawinfo这个属性了。?
代码如下:?
<?xml?version="1.0"?encoding="utf-8"?>??
  • <s:Application?xmlns:fx="http://ns.adobe.com/mxml/2009"???
  • ???????????????xmlns:s="library://ns.adobe.com/flex/spark"???
  • ???????????????xmlns:esri="http://www.esri.com/2008/ags"??
  • ???????????????xmlns:mx="library://ns.adobe.com/flex/mx"???
  • ???????????????creationComplete="application1_creationCompleteHandler(event)"??
  • ???????????????minWidth="955"?minHeight="600">??
  • ????<fx:Script>??
  • ????????<![CDATA[??
  • ????????????import?com.esri.ags.events.DetailsEvent;??
  • import?com.esri.ags.layers.supportClasses.LayerDetails;??
  • import?com.esri.ags.renderers.SimpleRenderer;??
  • import?com.esri.ags.symbols.PictureMarkerSymbol;??
  • ??????????????
  • import?mx.core.INavigatorContent;??
  • import?mx.events.FlexEvent;??
  • import?mx.rpc.events.FaultEvent;??
  • ????????????/**?
  • ?????????????*?动态读取图层图标??
  • ?????????????*?创建完成以后,加载?
  • ?????????????*/???
  • protected?function?application1_creationCompleteHandler(event:FlexEvent):void??
  • ????????????{??
  • ????????????????for(var?i:int?=?0?;?i<map.layerIds.length;?i++)??
  • ????????????????{??
  • ????????????????????if(map.layers[i]?is?ArcGISDynamicMapServiceLayer)??
  • ????????????????????{??
  • ??????????????????????????
  • ????????????????????????var?pServiceLayer:ArcGISDynamicMapServiceLayer?=?map.layers[i];??
  • ????????????????????????//调用allgetails方式,就相当于再rest方式下的All?Layers?and?Tables???
  • ????????????????????????pServiceLayer.getAllDetails();??
  • ????????????????????????pServiceLayer.addEventListener(DetailsEvent.GET_ALL_DETAILS_COMPLETE?,?onAllDetailsComplete);??
  • ????????????????????????pServiceLayer.addEventListener(FaultEvent.FAULT,?onFault);??
  • ????????????????????}??
  • ????????????????}??
  • ????????????}??
  • private?function?onAllDetailsComplete(event:DetailsEvent): ????????????????//这里只做了一个图层,不同的点,线,面,需要判断??
  • ????????????????var?p:LayerDetails?=?event.allDetails.layersDetails[0];??
  • ????????????????var?pSimpleRender:SimpleRenderer?=?(SimpleRenderer)(p.drawingInfo.renderer);??
  • ????????????????var?pSymbol:PictureMarkerSymbol?=?(PictureMarkerSymbol)(pSimpleRender.symbol);??
  • ????????????????image.source?=?pSymbol.source;??
  • //??
  • private?function?onFault(event:FaultEvent): ????????????????trace("not?ok");??
  • ????????]]>??
  • ????</fx:Script>??
  • ????<fx:Declarations>??
  • ????????<!--?Place?non-visual?elements?(e.g.,?services,?value?objects)?here?-->??
  • ????</fx:Declarations>??
  • ????<!--?用于显示图层的样式的?-->??
  • ????<mx:Image?id="image"?/>??
  • ????<esri:Map?id="map">??
  • ????????<esri:ArcGISDynamicMapServiceLayer?url="http://localhost:8399/arcgis/rest/services/resource/MapServer"/>??
  • ????</esri:Map>??
  • ??????
  • </s:Application>??

  • 这个例子写得比较简单,只是动态获取出图层样式,然后用图片的形式显示出来了,呵呵,明白原理是最重要的。主要是用到了DetailTask方式实现,这个是Flex API2.0新增加的类,调用方式和之前的Task方式一样,写法就像你用QueryTask一样,主要作用就是获取服务的详细信息。?

    (编辑:李大同)

    【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

      推荐文章
        热点阅读