最近遇到很多人问这类的问题,在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
分享到:
相关推荐
SD文件包含了地图的所有信息,可供ArcGIS Server读取并发布为地图服务。 3. 部署服务:在ArcGIS Server Manager中,登录到管理界面,选择“目录”选项卡,然后点击“添加新服务”。在这里,上传之前创建的SD文件,...
此外,还可以动态调整服务的图层可见性、比例和样式。 4. **地理处理服务**:地理处理是ArcGIS Server的一大亮点,它允许用户执行复杂的空间分析任务。Java SDK提供了对地理处理任务的编程支持,包括创建、执行和...
- [ArcGIS API for Flex 线上帮助系统](http://resources.esri.com/arcgisserver/apis/flex/index.cfm?fa=samples) - **下载地址**: - [ArcGIS API for Flex]...
1. **安装和配置服务器组件**:包括安装ArcGIS Server Manager、安装并配置ArcGIS Server站点等。 2. **发布服务**:通过创建服务定义文件(.sddraft),然后将其发布到ArcGIS Server站点。 3. **管理服务**:使用...
3. **地图制图**:学习如何利用编程控制地图的显示样式,如图层的透明度、符号系统、标签等,以及创建动态地图、专题图等。 4. **空间分析**:理解并应用空间统计、缓冲区分析、网络分析、地形分析等空间运算,为...
- 动态更新:通过编程方式改变元素属性,如更改图层透明度、符号样式,或者更新标注内容。 3. 标注: - 创建标注:开发者可以通过ArcGIS API创建基于几何对象或属性字段的动态标注,如使用ArcPy的`CreateFeatures...
- 支持对图层进行属性编辑,如改变符号样式、添加注记等。 5. **属性设置**: - 通过Tools > Options菜单项,可以进行高级设置,如地图缓存策略、网络连接参数等。 - 通过File > Map Properties菜单项,可以修改...
2. 图层对象操作:通过ILayer接口,可以加载栅格数据、矢量数据,调整图层透明度、符号样式等。 3. 空间分析:利用IGeometry接口进行几何对象操作,实现空间查询、缓冲区分析、网络分析等功能。 4. 数据交互:通过...
这包括添加新图层、编辑属性、调整符号样式等操作,让开发者能够构建交互式的地图界面。此外,教程还会涉及空间分析的基本概念,如缓冲区分析、距离计算等,这些都是GIS应用中常见的功能。 除了基本操作,教程还会...
8. **服务发布与Web GIS**:了解如何将本地应用程序转换为Web服务,使用ArcGIS Server发布和共享GIS服务,构建Web GIS应用。 9. **性能优化**:学习提高GIS应用性能的策略,如缓存管理、多线程处理、数据预处理等。...
在ArcGIS API中,我们可以通过使用Geographic Information Services (GIS) Server来读取SH文件,或者通过转换为GeoJSON再进行加载。 加载SH文件的步骤如下: 1. 将SHP文件转换为GeoJSON。可以使用在线工具或本地库...
- **服务端数据操作**:支持与ArcGIS Server、Portal for ArcGIS等服务端平台无缝对接,进行数据的读取、编辑和发布。 2. **新的功能增强** - **改进的渲染器**:4.16版本对图层渲染进行了优化,支持更多种类的...
它支持多种地图样式、图层管理和渲染规则,以及动态符号化和标注。 3. **Geometry**:几何对象库提供了处理地理空间数据的基本结构,如点、线、多边形等,以及各种几何操作,如相交、合并、裁剪等。 4. **Data ...
- **地图服务**:ArcGIS Engine支持加载在线地图服务,如ArcGIS Server发布的Map Services,通过`AGSMapServiceLayer`类可实现。 - **栅格数据**:可以使用`RasterLayer`类加载栅格数据,如TIFF、JPEG等。 - **矢量...
同时,它还支持与ArcGIS Server、ArcGIS Online等云服务集成,获取实时更新的地图数据。 4. **空间分析** 提供了丰富的空间分析工具,如缓冲区分析、距离计算、网络分析等,用于解决复杂的地理问题。开发者可以...
10. **地图服务与网络分析**:ArcGIS Engine还支持连接到ArcGIS Server,获取地图服务或执行网络分析任务,如路由、服务区域计算等。 通过《ArcGIS Engine开发从入门到精通》的源码学习,你可以逐步掌握以上这些...
9. **地图服务与分布式GIS**:探索如何集成ArcGIS Server,发布和使用地图服务,实现数据的共享和分布式计算。 10. **移动GIS开发**:如果教程涵盖,还会介绍如何利用ArcGIS Engine开发移动GIS应用,适应不同的移动...
- **服务集成**:与ArcGIS Server或其他GIS服务接口进行数据交换,如加载WMS服务、调用RESTful API等。 - **离线数据管理**:使用离线存储技术,如IndexedDB,保存和加载地图数据。 - **自定义样式**:利用CSS和SVG...
1. **地图渲染**:API 提供了强大的地图渲染功能,开发者可以自定义图层样式,包括颜色、符号、标签等,以创建美观且信息丰富的地图。此外,还有多种预设的地图风格可供选择。 2. **空间分析**:ArcGIS 4.6 API ...