FindTask类特点:
- 支持多图层查询
- 支持字段查询
- 只能进行属性查询,不能进行空间查询
- 不能指定返回字段,只能返回[displayFieldName : String,feature : Graphic,foundFieldName : String,layerId : Number,layerName : String,value : String ]
FindTask使用步骤:
- 创建FindTask类
- 创建FindParameters类
- 创建UI输入界面,定义按钮查询事件
- 在按钮事件中,执行FindTask的execute方法
- 在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>