arcgis api for flex 开发入门(六)identify<转>
arcgis api for flex 开发入门(六)identify
identify 是GIS中比较常用的工具之一,在arcgis api for flex中esri为我们提
供了一个Identify Task来轻松完成identify 的功能。
首先,还是使用<esri:IdentifyTask>标签来创建一个Identify Task。
<!-- Identify Task -->
<esri:IdentifyTask id="identifyTask"
identifyComplete="identifyCompleteHandler(event)"
url="http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Special
ty/ESRI_StatesCitiesRivers_USA/MapServer"/>
当identifyTask执行完毕的时候响应identifyComplete消息,我们就可以把
identify的结果做一些处理,比如添加到Graphic layer 上。
在执行identify之前,首先要对identify的参数设置一下,我们需要一个
IdentifyParameters对象。下面的代码是AS3脚本的代码,用来创建
IdentifyParameters和identify执行。
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是容差半径
width:Width of the map currently being viewed in pixels.
height : Height of the map currently being viewed in pixels
geometry 是用来做identify的几何,常用的有点选,矩形选择,多边形选择等
参数设置好了之后,直接调用identifyTask.execute( identifyParams );就ok了
。
那么我们用来做identify的几何怎么来呢,在什么时候去做Identify呢?
首先回答第一个问题,做identify的几何我们可以利用第四讲中draw控件使用鼠
标交互来获得,这也是RIA的特点之一。
那么在什么时候做identify呢?
就在做identify的几何画完之后做,嘿嘿,等于没说嘛,当然要在画完了就做:-D
现在我们就来完成上面的工作
定义一个draw控件
<esri
raw id="drawToolbar" map="{map}"
graphicsLayer="{myGraphicsLayer}" drawEnd="drawEndHandler(event)">
记得添加上drawEnd消息的响应函数drawEndHandler(event),这个事件会在draw
之后响应。
用as3脚本实现drawEndHandler和identifyCompleteHandler函数
private function drawEndHandler(event
rawEvent):void
{
var geometry : Geometry = event.geometry;
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 );
private function identifyCompleteHandler
(event:IdentifyEvent):void
{
for each (var result:IdentifyResult in
event.identifyResults)
{
myGraphicsLayer.add(result.feature);
}
}
Code原文地址:http://bbs.esrichina-bj.cn/ESRI/viewthread.php?tid=35661&extra=page%3D4%26amp%3Borderby%3Ddateline
identify 是GIS中比较常用的工具之一,在arcgis api for flex中esri为我们提
供了一个Identify Task来轻松完成identify 的功能。
首先,还是使用<esri:IdentifyTask>标签来创建一个Identify Task。
<!-- Identify Task -->
<esri:IdentifyTask id="identifyTask"
identifyComplete="identifyCompleteHandler(event)"
url="http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Special
ty/ESRI_StatesCitiesRivers_USA/MapServer"/>
当identifyTask执行完毕的时候响应identifyComplete消息,我们就可以把
identify的结果做一些处理,比如添加到Graphic layer 上。
在执行identify之前,首先要对identify的参数设置一下,我们需要一个
IdentifyParameters对象。下面的代码是AS3脚本的代码,用来创建
IdentifyParameters和identify执行。
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是容差半径
width:Width of the map currently being viewed in pixels.
height : Height of the map currently being viewed in pixels
geometry 是用来做identify的几何,常用的有点选,矩形选择,多边形选择等
参数设置好了之后,直接调用identifyTask.execute( identifyParams );就ok了
。
那么我们用来做identify的几何怎么来呢,在什么时候去做Identify呢?
首先回答第一个问题,做identify的几何我们可以利用第四讲中draw控件使用鼠
标交互来获得,这也是RIA的特点之一。
那么在什么时候做identify呢?
就在做identify的几何画完之后做,嘿嘿,等于没说嘛,当然要在画完了就做:-D
现在我们就来完成上面的工作
定义一个draw控件
<esri

graphicsLayer="{myGraphicsLayer}" drawEnd="drawEndHandler(event)">
记得添加上drawEnd消息的响应函数drawEndHandler(event),这个事件会在draw
之后响应。
用as3脚本实现drawEndHandler和identifyCompleteHandler函数
private function drawEndHandler(event

{
var geometry : Geometry = event.geometry;
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 );
private function identifyCompleteHandler
(event:IdentifyEvent):void
{
for each (var result:IdentifyResult in
event.identifyResults)
{
myGraphicsLayer.add(result.feature);
}
}

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?