FindTask類使用方法

 

FindTask類特點:

  1. 支持多圖層查詢
  2. 支持字段查詢
  3. 只能進行屬性查詢,不能進行空間查詢
  4. 不能指定返回字段,只能返回[displayFieldName : String,feature : Graphic,foundFieldName : String,layerId : Number,layerName : String,value : String ]

FindTask使用步驟:

  1. 創建FindTask類
  2. 創建FindParameters類
  3. 創建UI輸入界面,定義按鈕查詢事件
  4. 在按鈕事件中,執行FindTask的execute方法
  5. 在FindTask的executeComplete方法中,出力返回結果,返回Findfeasture數組

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
      xmlns:s="library://ns.adobe.com/flex/spark"
      xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" xmlns:esri="http://www.esri.com/2008/ags">

 <fx:Script>
  <![CDATA[
   import com.esri.ags.events.FindEvent;
   import com.esri.ags.tasks.supportClasses.FindResult;
   protected function button1_clickHandler(event:MouseEvent):void
   {
    findtask1.execute(findparameters);
   }

   protected function findtask1_executeCompleteHandler(event:FindEvent):void
   {
    var findresult:Array = event.findResults;
    grid1.dataProvider = findresult;
    for each (var result:FindResult in findresult)
    {
     graphic.add(result.feature); 
    }
   }

  ]]>
 </fx:Script>

 <fx:Declarations>
  <!-- Place non-visual elements (e.g., services, value objects) here -->
  <esri:PictureMarkerSymbol id="pic1" source="user4.png" />
  <esri:FindTask id="findtask1" executeComplete="findtask1_executeCompleteHandler(event)" url="http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StatesCitiesRivers_USA/MapServer" />
  <esri:FindParameters id="findparameters"  contains="true" returnGeometry="true" layerIds="[0,1,2]" searchFields="['CITY_NAME']" searchText="{Findtext.text}" />
 </fx:Declarations>
 <esri:Map>
  <esri:ArcGISDynamicMapServiceLayer  url="http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StatesCitiesRivers_USA/MapServer" />
 <esri:GraphicsLayer id="graphic"  symbol="{pic1}"/>
 </esri:Map>
 <s:TextInput x="41" y="18" id="Findtext"/>
 <s:Button x="173" y="17" label="Button" click="button1_clickHandler(event)"/>
 <mx:DataGrid x="40" y="57" id="grid1">
  <mx:columns>
   <mx:DataGridColumn headerText="圖層ID" dataField="layerId"/>
   <mx:DataGridColumn headerText="值" dataField="value"/>
   <mx:DataGridColumn headerText="圖層名" dataField="layerName"/>
  </mx:columns>
 </mx:DataGrid>
</s:Application>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章