addressToLocations方法相同,只是参数略有不同。locationToAddress方法的定义为:
locationToAddress(location:MapPoint, distance:Number = 0, responder:IResponder = null)关于该函数的详细信息请参考下面地址:
http://resources.esri.com/help/9.3/arcgisserver/apis/flex/apiref/index.html完整例子可以在samples/2.1下面找到。
2.2地理处理(Geoprocessing)
在ArcGIS API for Flex中可以使用GP服务来进行地理处理。在ArcGISOnline上的
gp
服务有
CreateDriveTimePolygons
和
Viewshed,下面以
CreateDriveTimePolygons服务为例来实现在ArcGIS API for Flex中调用GP服务。首先,使用
定义GP对象后,再定义一个GP的参数对象来传递参数,如下面代码: var params:Object = { \ : featureSet,\ : driveTimes }; 其中参数 Input_Location和Drive_Times与发布的GP服务相关,不同的GP服务有不同的参数。 关于GP参数设置的详细信息请参考下面地址: http://resources.esri.com/help/9.3/arcgisserver/apis/rest/index.html?gpexecute.html定义好GP对象和GP参数对象之后,下面实现在地图上单击,然后计算DriveTimes,并把得到的结果绘制在地图上的功能。 其中GP调用的代码如下: var featureSet:FeatureSet =new FeatureSet([graphic]);var params:Object = { \ : featureSet,\ : driveTimes }; gp.execute(params,new AsyncResponder( onResult, onFault ));function onResult( gpResult : ExecuteResult, 21 token: O bject= null ): void{ var pv : ParameterValue = gpResult.parameterValues[0];var fs : FeatureSet = pv.valueas FeatureSet; graphicsLayer.graphicProvider = fs.features; } function onFault( info : Object, token : Object =null ) :void { Alert.show(i nfo.toString()) ; } 定义好GP之后,直接调用GP的execute的方法即可,成功响应onResult,失败响应onFault。 关于GP调用的详细信息请参考下面地址: http://resources.esri.com/help/9.3/arcgisserver/apis/flex/apiref/index.html完整例子可以在samples/2.2目录下找到。 2.3几何服务(Geometry Service) Geometry Service顾名思义,就是提供针对几何层级的服务,例如Project, Simplify, Buffer,Areas And Lengths, Lengths等。详细信息可以参考下面地址: http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Geometry/GeometryServer上面的地址发布了5个Geometry Service:Project, Simplify, Buffer,AreasAnd Lengths, Lengths。 下面以Buffer为例,来实现在ArcGIS API for Flex中调用Geometry service。首先,使用 url=\id唯一标识Geometry Service,url指定提供Geometry Service的地址。和Identify工具类似,进行Buffer操作首先要创建一个需要做buffer的几何,然后定义一个BufferParameters,执行Buffer操作,最后将buffer的结果绘制到GraphicsLayer上。 下面介绍一下BufferParameters参数的意义:distances为buffer半径,features 22 为需要做buffer的要素集合,unit为单位,bufferSpatialReference为buffer操作时的空间参照系。 Buffer调用的代码如下: var bufferParameters : BufferParameters = new BufferParameters(); bufferParameters.features = [point];bufferParameters.distances = [3000]; bufferParameters.unit = BufferParameters.UNIT_METER; bufferParameters.bufferSpatialReference=newSpatialReference( 602113);myGeometryService.addEventListener (GeometryServiceEvent.BUFFER_COMPLETE, bufferCompleteHandler); myGeometryService.buffer( bufferParameters ); 关键的部分是bufferParameters.features参数设置的features一定要有空间参考系,不然Buffer不成功。 关于Geometry Service的详细信息请参考下面地址: http://resources.esri.com/help/9.3/arcgisserver/apis/flex/apiref/index.htmlhttp://resources.esri.com/help/9.3/arcgisserver/apis/flex/help/index.html其余的绘制操作,将结果绘制到GraphicsLayer上的操作请参考1.3节绘制与符号化部分。 完整例子可以在samples/2.3目录下找到。 2.4打印地图(Print) 在Flex中打印地图全部依赖于Flex的打印功能。 在Flex中打印,使用mx.printing.FlexPrintJob的功能即可。因为flex的打印功能实现比较简单,所以就不做详细讲解。主要的内容就是定义一个FlexPrintJob对象,然后调用FlexPrintJob对象的send()方法把打印指令发送给打印机。 代码如下: privatefunction doPrint(myFlexPrintJobScaleType:String):void{ var myPrintJob:FlexPrintJob =new FlexPrintJob();if (myPrintJob.start()) { try { 23 myMap.zoomSliderVisible= false; myPrintJob.addObject(myPanel, myFlexPrintJobScaleType); myMap.zoomSliderVisible= true; } catch (e:Error) { Alert.show(e .toString()) ; } myPrintJob.send(); }} 详细示例可以在samples/2.4中找到。 2.5 GeoRSS的读取2.5.1 GeoRSS概述 GeoRSS是指给RSS feed添加位置信息或者地理标签到的一种协议,它标准化了表达地理信息的方式,简捷并高效地满足了给Web内容添加位置信息的需求。时空信息在RSS里以XML格式指定,和RSS 0.9、RSS 1.0、RSS 2.0、Atom甚至其他基于XML格式的文件协作,实现在网络上编码时空信息。 GeoRSS提供了一种地理位置搜索与聚合的方案,并且可以用于地理分析、地理搜索、地理聚合。例如在指定地点10公里范围内,所有可能受地震影响的地物的信息,在自己出行道路中出现交通事故的位置点等等。只要RSS包含了地理位置信息,就可以将应用进行扩展。 2.5.2 GeoRSS读取 在ArcGIS API for Flex中虽然没有直接对GeoRSS进行支持,但在ArcGIS APIfor Flex 的 samples 里提供了对 GeoRSS 读取的库,在 arcgis_api_for_flex_1_0\\ArcGIS_Flex\\samples\\src\\com\\esri\\ags\\samples目录下面,以as文件的形式存在,主要包括3个as文件:Namespaces.as,GeoRSSProvider.as,GeoRSSUtil.as。 关于GeoRSS读取可以详细剖析这三个文件,下面主要介绍如何使用这个库 24 来读取GeoRSS。 首先,使用 id唯一标识GeoRSSProvider。 然后,定义一个ComboBox和一个Button。 ComboBox用来存储GeoRSS提供者的地址,Button用来加载GeoRSS。其中ComboBox的属性dataProvider绑定arr。arr的定义如下: privatevar arr : Array = [ {url:\, label:\, georssFunction:usgs}, {url:\, label:\, georssFunction:gdacs}, {url:\ws?format=xml\, label:\, georssFunction:reuters}, {url:\200\, label:\, georssFunction:flickr} ]; 其中georssFunction为进行解释url提供的GeoRSS的回调函数。每个地址提供的GeoRSS的结构都是不同的,所以要写回调函数自己去解析。 关于GeoRSS的更多详细信息请参考下面的地址:http://georss.org/http://www.georss.cn/Button的click事件响应load_clickHandler()函数: privatefunction load_clickHandler() :void 25