第一范文网 - 专业文章范例文档资料分享平台

ArcGIS API for Flex 教程 - 图文 

来源:用户分享 时间:2025/5/23 3:45:05 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

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

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 教程 - 图文&nb 的文档
ArcGIS API for Flex 教程 - 图文 .doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c8tt8k12imx4yj364r8st_3.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top