`
Virgo_S
  • 浏览: 1150869 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

阅读更多
最近遇到很多人问这类的问题,在ArcGIS10的rest接口已经提供给我们动态读取图层样式的接口了。
其实当我们在访问ArcGIS Server10的时候,会发现每一个服务界面提供给我们比以前更多的信息了,这些信息只要你可以看到,我们是都有接口读取到的。

以ESRI官网的服务为例:
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):void
			{
				//这里只做了一个图层,不同的点,线,面,需要判断
				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):void
			{
				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一样,主要作用就是获取服务的详细信息。



  • 大小: 24.4 KB
  • 大小: 24.5 KB
1
0
分享到:
评论

相关推荐

    AddDataLayer--arcgis server 9.2 添加图层的应用

    SD文件包含了地图的所有信息,可供ArcGIS Server读取并发布为地图服务。 3. 部署服务:在ArcGIS Server Manager中,登录到管理界面,选择“目录”选项卡,然后点击“添加新服务”。在这里,上传之前创建的SD文件,...

    ArcGIS Server Java中文参考资料

    此外,还可以动态调整服务的图层可见性、比例和样式。 4. **地理处理服务**:地理处理是ArcGIS Server的一大亮点,它允许用户执行复杂的空间分析任务。Java SDK提供了对地理处理任务的编程支持,包括创建、执行和...

    ArcGIS+API+for+Flex

    - [ArcGIS API for Flex 线上帮助系统](http://resources.esri.com/arcgisserver/apis/flex/index.cfm?fa=samples) - **下载地址**: - [ArcGIS API for Flex]...

    ArcGis服务器开发文档

    1. **安装和配置服务器组件**:包括安装ArcGIS Server Manager、安装并配置ArcGIS Server站点等。 2. **发布服务**:通过创建服务定义文件(.sddraft),然后将其发布到ArcGIS Server站点。 3. **管理服务**:使用...

    ArcGIS二次开发编程实例

    3. **地图制图**:学习如何利用编程控制地图的显示样式,如图层的透明度、符号系统、标签等,以及创建动态地图、专题图等。 4. **空间分析**:理解并应用空间统计、缓冲区分析、网络分析、地形分析等空间运算,为...

    ArcGIS二次开发

    - 动态更新:通过编程方式改变元素属性,如更改图层透明度、符号样式,或者更新标注内容。 3. 标注: - 创建标注:开发者可以通过ArcGIS API创建基于几何对象或属性字段的动态标注,如使用ArcPy的`CreateFeatures...

    ArcGIS_Explorer开发及ArcGIS_Online应用模式

    - 支持对图层进行属性编辑,如改变符号样式、添加注记等。 5. **属性设置**: - 通过Tools &gt; Options菜单项,可以进行高级设置,如地图缓存策略、网络连接参数等。 - 通过File &gt; Map Properties菜单项,可以修改...

    Arcgis.zip_ArcGIS C#_ArcGIS二次开发_arcgis 二次开发_c# arcgis

    2. 图层对象操作:通过ILayer接口,可以加载栅格数据、矢量数据,调整图层透明度、符号样式等。 3. 空间分析:利用IGeometry接口进行几何对象操作,实现空间查询、缓冲区分析、网络分析等功能。 4. 数据交互:通过...

    ArcGIS二次开发初级教程

    这包括添加新图层、编辑属性、调整符号样式等操作,让开发者能够构建交互式的地图界面。此外,教程还会涉及空间分析的基本概念,如缓冲区分析、距离计算等,这些都是GIS应用中常见的功能。 除了基本操作,教程还会...

    《ArcGIS Engine+C#实例开发教程》源码

    8. **服务发布与Web GIS**:了解如何将本地应用程序转换为Web服务,使用ArcGIS Server发布和共享GIS服务,构建Web GIS应用。 9. **性能优化**:学习提高GIS应用性能的策略,如缓存管理、多线程处理、数据预处理等。...

    arcgis api for js定制开发加载shp以及json.zip

    在ArcGIS API中,我们可以通过使用Geographic Information Services (GIS) Server来读取SH文件,或者通过转换为GeoJSON再进行加载。 加载SH文件的步骤如下: 1. 将SHP文件转换为GeoJSON。可以使用在线工具或本地库...

    arcgis_js_v416_api.zip

    - **服务端数据操作**:支持与ArcGIS Server、Portal for ArcGIS等服务端平台无缝对接,进行数据的读取、编辑和发布。 2. **新的功能增强** - **改进的渲染器**:4.16版本对图层渲染进行了优化,支持更多种类的...

    arcgis engine引用包.zip

    它支持多种地图样式、图层管理和渲染规则,以及动态符号化和标注。 3. **Geometry**:几何对象库提供了处理地理空间数据的基本结构,如点、线、多边形等,以及各种几何操作,如相交、合并、裁剪等。 4. **Data ...

    ArcGISEngine.rar_ArcGISEngine

    - **地图服务**:ArcGIS Engine支持加载在线地图服务,如ArcGIS Server发布的Map Services,通过`AGSMapServiceLayer`类可实现。 - **栅格数据**:可以使用`RasterLayer`类加载栅格数据,如TIFF、JPEG等。 - **矢量...

    arcgis-runtime-sdk-android-100.12.0.zip

    同时,它还支持与ArcGIS Server、ArcGIS Online等云服务集成,获取实时更新的地图数据。 4. **空间分析** 提供了丰富的空间分析工具,如缓冲区分析、距离计算、网络分析等,用于解决复杂的地理问题。开发者可以...

    ArcGIS Engine开发从入门到精通源码.rar

    10. **地图服务与网络分析**:ArcGIS Engine还支持连接到ArcGIS Server,获取地图服务或执行网络分析任务,如路由、服务区域计算等。 通过《ArcGIS Engine开发从入门到精通》的源码学习,你可以逐步掌握以上这些...

    ArcGIS Engine+C#实例开发教程(PDF版)

    9. **地图服务与分布式GIS**:探索如何集成ArcGIS Server,发布和使用地图服务,实现数据的共享和分布式计算。 10. **移动GIS开发**:如果教程涵盖,还会介绍如何利用ArcGIS Engine开发移动GIS应用,适应不同的移动...

    ArcGIS For JavaScript4.8离线API

    - **服务集成**:与ArcGIS Server或其他GIS服务接口进行数据交换,如加载WMS服务、调用RESTful API等。 - **离线数据管理**:使用离线存储技术,如IndexedDB,保存和加载地图数据。 - **自定义样式**:利用CSS和SVG...

    ArcGis4.6 API

    1. **地图渲染**:API 提供了强大的地图渲染功能,开发者可以自定义图层样式,包括颜色、符号、标签等,以创建美观且信息丰富的地图。此外,还有多种预设的地图风格可供选择。 2. **空间分析**:ArcGIS 4.6 API ...

Global site tag (gtag.js) - Google Analytics