GISchangeourworld,butFlashchangemylife1ArcGISServer9.3forFlexAPI初级教程资料来源:ESRI中国社区整理:hhuduyang时间:2010-1-29GISchangeourworld,butFlashchangemylife21.环境搭建.....................................................................................................................................32.创建地图.....................................................................................................................................63.使用地图浏览控件......................................................................................................................84.Draw控件使用..........................................................................................................................105.查询...........................................................................................................................................126.Identify功能..............................................................................................................................167.GeometryService的使用..........................................................................................................198.GP服务的使用...........................................................................................................................229.WebServices的使用..................................................................................................................25GISchangeourworld,butFlashchangemylife31.环境搭建ArcGISServerAPIforFlex是2009年四月新推出来的进行RIA开发的Flex库,是ArcGISServer9.3的一部分,使用ArcGISAPIforFlex可以基于ArcGISServer建立漂亮的富互联网应用程序richinternetapplications(RIAs),优点是运行速度快,用户体验效果会比目前的WEBGIS好。使用ArcGISServerAPIforFlex可以达到下面的效果①显示你的地图数据并可以和数据交互②在服务器上执行空间处理模型并显示结果③基于ArcGISOnline上的底图显示你自己的数据④根据属性或者位置查找你的数据并显示结果⑤查找地址并显示结果⑥用创新的方式可视化结果⑦创建mashups具体详情可以参考=samples上面有一些例子。ArcGISServerAPIforFlex下载地址为:=home里面有个download。开发ArcGISServerAPIforFlex的程序需要Flex环境的支持。FlexSDK3的下载地址为=3.0.1.2012&pkgtype=1有了FlexSDK3和ArcGISServerAPIforFlex我们就可以开发RIA的Flex程序了。为了开发方便,我们最好使用Flexbuilder,可以从adobe的官方网站上下载试用版,下载地址为安装好Flexbuilder之后会安装FlexSDK3,所以就不用自己手工安装了。第一个ArcGISServerAPIforFlex程序。①打开Flexbuilder,创建一个Flex工程(名称Demo)。②右键单击工程名,选择属性,在属性对话框中选择Flexbuildpath,选择libaraypath选项卡,单击addswc把下载的ArcGISServerAPIforFlex添加进去,环境就配置好了(下GISchangeourworld,butFlashchangemylife4图)。③在Demo.mxml文件中输入下面这代码?xmlversion=1.0encoding=utf-8?mx:Applicationxmlns:mx=:esri==UsingArcGISAPIforFlextoconnecttoacachedArcGISOnlineservicestyleName=plainesri:MapcrosshairVisible=trueesri:ArcGISTiledMapServiceLayerurl=:Map/mx:Application编译,执行。第一个简单的agsFlex程序就写好了。GISchangeourworld,butFlashchangemylife5GISchangeourworld,butFlashchangemylife62.创建地图在Flex中创建一个esri的map,你只需要使用esri:Map标签就可以轻松完成。在esri:Map标签中可以添加属性和响应事件的消息。如下:esri:Mapwidth=100%height=50%id=EsriMapcreatiresize=EsriMapResize(event);extentChange=ESRIMapExtentChange(event);mouseMove=OnDrawMouseMove(event)/width和height定义的map的大小,id=EsriMap唯一标识了这个map。针对map的消息也有很多,最常用的就是creationComplete,resize和鼠标消息了。现在我们map有了,那么我们如何让她显示数据呢,这就需要给esri:Map标签添加一个layer子标签。在agsFlexAPI中有以下几种类型的layer。ArcGISDynamicMapServiceLayer:AllowsyoutoworkwithadynamicmapserviceresourceexposedbytheArcGISServerRESTAPI.ArcGISImageServiceLayer:AllowsyoutoworkwithanimageserviceresourceexposedbytheArcGISServerRESTAPI.ArcGISMapServiceLayer:ThebaseclassforArcGISServermapservices.ArcGISTiledMapServiceLayer:AllowsyoutoworkwithacachedmapserviceresourceexposedbytheArcGISServerRESTAPI.ArcIMSMapServiceLayer:AllowsyoutoworkwithanArcIMSimageservice.GPResultImageLayer:AllowsyoutoviewageoprocessingtaskresultidentifiedbyjobIdandparameterName.GraphicsLayer:AlayerthatcontainsoneormoreGraphicfeatures.其中GraphicsLayer是支持客户端添加Graphicfeatures的图层,需要在客户端表现的,或者交互操作中产生的要素都要加到这个layer上。下面,我们就添加一个ArcGISTiledMapServiceLayer和GraphicsLayer到map上。esri:Mapwidth=100%height=50%id=EsriMapcreatiresize=EsriMapResize(event);extentChange=ESRIMapExtentChange(event);mouseMove=OnDrawMouseMove(event)esri:ArcGISTiledMapServiceLayerurl=:GraphicsLayerid=myGraphicsLayerspatialReference={sr}//esri:Map其中esri:ArcGISTiledMapServiceLayer标签中的url属性为提供该服务的地址。esri:GraphicsLayer标签其中的spatialReference属性定义了该图层的空间参考系。创建一个空间参考系,只需要使用esri:SpatialReference标签就可以了,其中wkid是esri已经定义好的空间草考系的ID,具体ID对应的空间参考可以在中查找。如下为创建一个kid=4326的空间参考系。esri:SpatialReferenceid=srwkid=4326/那么,我们如何定义我们想显示的范围呢?很简单,在esri:Map下面添加esri:extent子标签,我们就可以来控制当前的显示范围了。esri:extentesri:Extentid=esriMapExtentxmin=116ymin=39.5xmax=116.5ymax=40.5//esri:extent其中x是经度,y是纬度。这样