天天看點

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)"        

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

arcgis api for flex 開發入門(六)identify

raw id="drawToolbar" map="{map}"

graphicsLayer="{myGraphicsLayer}" drawEnd="drawEndHandler(event)">

記得添加上drawEnd消息的響應函數drawEndHandler(event),這個事件會在draw

之後響應。

用as3腳本實作drawEndHandler和identifyCompleteHandler函數

private function drawEndHandler(event

arcgis api for flex 開發入門(六)identify

rawEvent):void

            {

                var geometry : Geometry = event.geometry;

                var identifyParams : IdentifyParameters = new

IdentifyParameters();

           private function identifyCompleteHandler

(event:IdentifyEvent):void

           {

               for each (var result:IdentifyResult in

event.identifyResults)

               {

                   myGraphicsLayer.add(result.feature);

               }

           }

本文轉自溫景良(Jason)部落格園部落格,原文連結:http://www.cnblogs.com/wenjl520/archive/2009/06/02/1494570.html/,如需轉載請自行聯系原作者

繼續閱讀