好文档 - 专业文书写作范文服务资料分享网站

ArcGIS API for Flex 教程 - 图文 

天下 分享 时间: 加入收藏 我要投稿 点赞

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服务,url指向提供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。首先,使用标签定义一个GeometryService对象。

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。

首先,使用标签定义一个GeoRSSProvider对象,如下面代码:

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

ArcGIS API for Flex 教程 - 图文 

addressToLocations方法相同,只是参数略有不同。locationToAddress方法的定义为:locationToAddress(location:MapPoint,distance:Number=0,responder:IResponder=null)关于该函数的详细信息请参考下面地址:http://resources.esri.c
推荐度:
点击下载文档文档为doc格式
8tt8k12imx4yj364r8st
领取福利

微信扫码领取福利

微信扫码分享