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

ArcGIS API for Flex 教程 - 图文 

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

import com.esri.ags.toolbars.Draw;

其次,定义并实现drawEndHandler()函数:

private function drawEndHandler(event:DrawEvent):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 );}

在drawEndHandler()函数中定义了一个identifyParams,每次调用drawEndHandler的时候,identifyTask都会把identifyParams作为传入参数调用execute方法去执行。执行完成后会响应identifyCompleteHandler()函数。

定义并实现identifyCompleteHandler()函数:

private function identifyCompleteHandler(event:IdentifyEvent):void{

for each (var result:IdentifyResult in event.identifyResults) {

myGraphicsLayer.add(result.feature);

switch (result.feature.geometry.type)

{

case Geometry.MAPPOINT:

{

var mp:MapPoint = result.feature.geometryas MapPoint;var txt :Text=new Text();

txt.text=\;

myMap.infoWindow.content=txt; myMap.infoWindow.show(mp);

break;

}

case Geometry.POLYLINE:

{

var lin:Polyline = result.feature.geometryas Polyline;var txt :Text=new Text();

txt.text=\;

myMap.infoWindow.content=txt;

myMap.infoWindow.show(lin.extent.center);

16

break;

}

case Geometry.POLYGON:

{

var pgn:Polygon= result.feature.geometryas Polygon;var txt :Text=new Text();

txt.text=\;

myMap.infoWindow.content=txt;

myMap.infoWindow.show(pgn.extent.center);

break;

} } } }

在identifyCompleteHandler()函数中,遍历identifyResults,将identifyResults添加到GraphicsLayer上。

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

1.4.6 InfoWindow

InfoWindow是ArcGIS API for Flex中提供的类似于标注的窗口,可以用来显示用户自定义的信息,可以是文本、图片,也可以是复杂的自定义组件。

使用InfoWindow,只要设置map的infoWindow属性即可。如下面代码:

var canvas:Canvas = new Canvas();var txtTem :Text = new Text();txtTem.Text= \

canvas.addChild(txtTem);

myMap.infoWindow.content = canvas;

var mapPnt2:MapPoint = new MapPoint(114.1547298,30.5127677); myMap.infoWindow.show(mapPnt2);

content设置infoWindow的内容,show方法设置infoWindow的显示位置。关于InfoWindow的使用已经结合在上一小节中(IdentifyTask),例子以及代码请参考上例。

17

二中级篇

2.1地理定位(Locator)2.1.1概述

地理定位(Locator)即地理编码(Geocode)又称地址匹配(address-matching),是指建立地理位置坐标与给定地址一致性的过程。也是指在地图上找到并标明每条地址所对应的位置。地理编码是GIS中比较重要的一个功能。

2.1.2地理编码(GeoCode)

在ArcGIS API for Flex中使用地理编码和执行查询任务类似,首先使用标签定义一个Locator对象:

url=\A/GeocodeServer\

id唯一标识Locator,url指向提供Locator服务的地址。

Locator定义之后,在界面上定义一组文本输入框和一个执行按钮来调用这个Locator:

18

Canada USA

文本输入框用来输入地址的详细信息,button用来执行查询的动作。实现地理编码的功能:

首先,定义一个Object来存储地址的详细信息,包括Address,City,State,Zip,Country等信息。

然后,定义一个Array来存储输出字段的名称。

最后,把myAddress和myOutFields作为输入参数调用locateTask对象的addressToLocations方法。

具体代码请参考下面的代码:

privatefunction doGeoCode() :void{

var myAddress:Object = { Address:a ddress.text, City:c ity.text, State:s tate.text, Zip:z ip.text, Country:c ountry.text };

var myOutFields:Array = [\];

locateTask.addressToLocations(myAddress, myOutFields,new AsyncResponder(onResult,onFault));

function onResult( candidates : Array, token : Object =null ) :void {

if (candidates.length > 0)

{

var addressCandidate : AddressCandidate = candidates[0];var myGraphic : Graphic =new Graphic();

myGraphic.geometry= a ddressCandidate.location; myGraphic.symbol= m ySymbol;

19

myGraphic.toolTip = addressCandidate.address.toString();myGraphic.id= \;myGraphicsLayer.add(m yGraphic) ;myMap.centerAt(a ddressCandidate.location) ;myInfo.htmlText= \+addressCandidate.address.toString();

}else

{

myInfo.htmlText= \nothing :(\;

Alert.show(\ +\ + address.text +\ + city.text +\ + zip.text +\ + state.text

+\ + country.text); } }

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

myInfo.htmlText= \ + info.toString(); Alert.show(\ + info.toString()); }}

其中,addressToLocations的定义为:

public function addressToLocations(address:Object, outFields:Array = null, responder:IResponder= null):void

关于该函数的详细信息请参考下面地址:

http://resources.esri.com/help/9.3/arcgisserver/apis/flex/apiref/index.html该方法是一个异步调用的方法,成功则调用onResult()函数,失败则调用onFault函数。这个过程和查询任务的调用过程相同。在onResult函数中我们处理返回的结果,地图中心平移到返回的地址,并增加一个点来标识。在onFault中我们处理失败,将通过对话框返回错误信息。

2.1.3逆地理编码(Reverse Geocode)

逆地理编码就是把地理坐标解析成对应的地址。Locator也提供的进行逆地理编码的函数,即locationToAddress方法。该方法的调用方式和

20

ArcGIS API for Flex 教程 - 图文 

importcom.esri.ags.toolbars.Draw;其次,定义并实现drawEndHandler()函数:privatefunctiondrawEndHandler(event:DrawEvent):void{vargeometry:Geometry=event.geometry;
推荐度:
点击下载文档文档为doc格式
8tt8k12imx4yj364r8st
领取福利

微信扫码领取福利

微信扫码分享