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

ArcGIS API for Flex 教程 - 图文 

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

结果,对结果在客户端处理。

1.4.2在mxml文档中嵌入 ActionScript

在使用QueryTask,FindTask,IdentifyTask之前,首先介绍一下如何在mxml文档中嵌入 ActionScript.。通过在mxml文档中嵌入 ActionScript脚本我们可以更加灵活的使用ArcGIS API for Flex。

关于ActionScript的语法可以参考ActionScript的相关书籍。

要在mxml文档中嵌入ActionScript,需要使用标签:

ActionScript是一种类java语言,它本身有一个AVM,把ActionScript编译成java的代码,然后再通过JVM转换成字节码执行。

1.4.3 QueryTask

在ArcGIS API for Flex中进行查询操作,需要定义一个查询任务面板。使用标签来定义一个查询任务面板。

url=%us_USA/MapServer/5\

returnGeometry=\

spatialRelationship=\

MED_AGE POP2007

id唯一标识这个查询任务,url指定查询服务的地址。

定义一个查询,text属性指定查询的内容,子标签定义Query查询的结果返回哪些字段的内容。

QueryTask定义好之后,在界面上定义一个文本输入框和一个查询按钮来调用这个QueryTask:

layout=\

11

文本输入框用来输入查询的内容,button用来执行查询的动作。下面实现查询功能:

首先,使用import指令引入我们需要的命名空间,和java基本一样。

import com.esri.ags.Graphic;

import com.esri.ags.tasks.FeatureSet; import com.esri.ags.tasks.Query; import mx.controls.Alert;

import mx.rpc.AsyncResponder; ]]>

其次,定义doQuery()函数(注意ActionScript代码要放到标签中):

private function doQuery() : void {

queryTask.execute( query, new AsyncResponder( onResult, onFault ));}

在doQuery()函数中直接调用了queryTask的execute方法,这是一个异步调用。成功响应onResult函数,失败则响应onFault函数。最后查询得到的结果将在onResult函数中处理。

下面是onResult函数的定义以及实现:

private function onResult( featureSet : FeatureSet, token : Object = null ) : void{

var displayFieldName : String = featureSet.displayFieldName;

for each ( var myGraphic : Graphic in featureSet.features ) {

// ToolTip

myGraphic.toolTip = \ + myGraphic.attributes[displayFieldName] + \

+ myNumberFormatter.format(myGraphic.attributes.POP2007) + \ // show on map

myGraphicsLayer.add( myGraphic ); }}

查询结果返回一个 FeatureSet,在onResult函数中遍历这个 FeatureSet,然后把每个feature绘制到GraphicLayer上,并显示ToolTip。

12

如果查询失败,则在onFault函数中对失败进行处理,如下代码:

private function onFault( info : Object, token : Object = null ) : void {

Alert.show( info.toString() ); }

弹个对话框出来告诉用户失败的详细信息。

完整例子可以在samples/1.4/3目录下找到。

1.4.4 FindTask

在ArcGIS API for Flex中执行Find任务,需要使用FindTask。使用标签定义一个FindTask对象,如下面的代码:

id唯一标识FindTask,executeComplete事件指定Find任务完成后调用的函数,url指定提供Find服务的地址。

使用FindTask,还需要一个FindParameters对象来指定查找的参数。

id唯一标识FindParameters,searchText指定查找的字符串,searchFields指定在哪些字段查找。

定义好FindTask和FindParameters之后,在界面上定义一个文本输入框和一个button来完成Find功能的调用工作。

horizontalAlign=\

文本输入框用来输入查找的内容,button用来执行查询的动作。实现Find功能:

首先,使用import指令引入需要的命名空间:

import com.esri.ags.events.FindEvent;

其次,定义doFind()函数:

13

Private function doFind():void {

findTask.execute( myFindParams );}

在doFind()函数中FindTask对象直接调用了execute方法,并把FindParameters对象做为传入参数。

下面实现 executeCompleteHandler()函数,这个函数在定义FindTask的时候被指定为响应executeComplete事件的函数,即当Find任务完成的时候会响应executeCompleteHandler()函数,Find得到的结果将在这个函数里进行处理。

private function executeCompleteHandler( event : FindEvent ) : void{

myGraphicsLayer.clear(); var graphic : Graphic;

resultSummary.text = \\ for (var i : Number = 0; i < event.findResults.length; i++) {

graphic = event.findResults[i].feature; graphic.toolTip = event.findResults[i].foundFieldName + \\+

event.findResults[i].value;

myGraphicsLayer.add(graphic); }}

在executeCompleteHandler函数中遍历Find的结果,给每一个graphic添加

一个toolTip,显示该结果对应的字段名和字段值。

同时把查询到的结果显示到DataGrid中:

dataProvider=\ scroll=\width=\height=\

headerText=\

只要把DataGrid的dataProvider绑定到findTask.executeLastResult就可以了。完整例子可以在samples/1.4/4目录下找到。

14

1.4.5 IdentifyTask

Identify是GIS中比较常用的工具之一,在ArcGIS API for Flex中,使用 IdentifyTask来实现Identify的功能。

使用标签来定义一个Identify Task对象,如下面代码:

identifyComplete=\

url=\CitiesRivers_USA/MapServer\

id唯一标识IdentifyTask,identifyComplete事件绑定identifyCompleteHandler()函数,url指定IdentifyTask服务的地址。

执行Identify,需要定义一个IdentifyParameters对象。下面使用ActionScript来定义一个IdentifyParameters对象,使用标签也可以完成同样的工作。

var identifyParams : IdentifyParameters = new IdentifyParameters(); identifyParams.returnGeometry = true; identifyParams.tolerance = 3; identifyParams.width = 600; identifyParams.height = 550;

identifyParams.geometry = geometry;

identifyParams.layerOption = IdentifyParameters.LAYER_OPTION_ALL; identifyParams.mapExtent = map.extent; identifyTask.execute( identifyParams );

其中tolerance是容差半径,geometry是用来做identify的几何。

下面在界面上使用鼠标交互来完成Identify:首先,定义一个draw控件:

graphicsLayer=\

drawEnd事件绑定到drawEndHandler(event)函数,这个事件会在绘制完成后触发。

使用ActionScript脚本实现drawEndHandler和identifyCompleteHandler函数:首先,引入命名空间:

import com.esri.ags.Graphic; import com.esri.ags.events.DrawEvent; import com.esri.ags.events.IdentifyEvent; import com.esri.ags.geometry.Geometry; import com.esri.ags.symbol.Symbol; import com.esri.ags.tasks.IdentifyParameters; import com.esri.ags.tasks.IdentifyResult;

15

ArcGIS API for Flex 教程 - 图文 

结果,对结果在客户端处理。1.4.2在mxml文档中嵌入ActionScript在使用QueryTask,FindTask,IdentifyTask之前,首先介绍一下如何在mxml文档中嵌入ActionScript.。通过在mxml文档中嵌入ActionScript脚本我们可以更加灵活的使用ArcGISAPIforFlex。关于Actio
推荐度:
点击下载文档文档为doc格式
8tt8k12imx4yj364r8st
领取福利

微信扫码领取福利

微信扫码分享