<?xml version="1.0" encoding="utf-8"?>
<mx:Application
xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:esri="http://www.esri.com/2008/ags"
pageTitle="Find features in Map Layers"
styleName="plain">
<mx:Script>
<![CDATA[
import com.esri.ags.events.QueryEvent;
import com.esri.ags.Graphic;
import com.esri.ags.events.FindEvent;
import com.esri.ags.geometry.Geometry;
import com.esri.ags.tasks.Query;
import com.esri.ags.tasks.FeatureSet;
private function doFind():void
{
findTask.execute(myFindParams);
}
private function findCompleteHandler(event:FindEvent):void
{
myGraphicsLayer.clear();
var graphic:Graphic;
var query:Query = new Query();
resultSummary.text = event.findResults.length + " State Found using Find Task";
var resultCount:int = event.findResults.length;
for (var i:Number = 0; i < resultCount; i++)
{
query.returnGeometry = true;
query.outFields = ["CITY_NAME","POP1990"];
query.outSpatialReference = myMap.spatialReference;
graphic = event.findResults.feature;
query.geometry = graphic.geometry;
graphic.symbol = sfsFind;
myGraphicsLayer.add(graphic);
queryTask.execute(query);
}
}
private function queryCompleteHandler(event:QueryEvent):void
{
myGraphicsLayer.clear();
var fset:FeatureSet = event.featureSet;
resultSummary.text += " and " + fset.features.length + " cities found using spatial query."
for each (var graphic:Graphic in fset.features)
{
graphic.symbol = smsFind;
graphic.toolTip = graphic.attributes["CITY_NAME"] + " - Population: " + graphic.attributes["POP1990"]
myGraphicsLayer.add(graphic);
}
}
]]>
</mx:Script>
<!-- Symbol for Find Result as Point -->
<esri:SimpleMarkerSymbol id="smsFind" style="square" color="0xFFFF00" size="11" alpha="0.9">
<esri:SimpleLineSymbol color="0x000000"/>
</esri:SimpleMarkerSymbol>
<!-- Symbol for Find Result as Polygon -->
<esri:SimpleFillSymbol id="sfsFind" color="0xFFFF00" alpha="0.7"/>
<!-- Find Task -->
<esri:FindTask
id="findTask"
executeComplete="findCompleteHandler(event)"
url="http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StatesCitiesRivers_USA/MapServer"
/>
<!-- Query Task -->
<esri:QueryTask
id="queryTask"
executeComplete="queryCompleteHandler(event)"
url="http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StatesCitiesRivers_USA/MapServer/0"
/>
<esri:FindParameters id="myFindParams"
returnGeometry="true"
contains="true"
searchText="{fText.text}"
layerIds="[2]"
searchFields="['STATE_NAME']"
/>
<mx:HBox width="100%" height="40" backgroundColor="0xDDDDFF" paddingTop="10" horizontalAlign="center">
<mx:Text text="Search for names of States:"/>
<mx:TextInput maxWidth="400" id="fText" enter="doFind()" text="Alabama"/>
<mx:Button label="Find" click="doFind()"/>
</mx:HBox>
<mx:Text id="resultSummary" height="15"/>
<esri:Map id="myMap">
<esri:extent>
<esri:Extent xmin="-126" ymin="24" xmax="-67" ymax="50">
<esri:SpatialReference wkid="4326"/>
</esri:Extent>
</esri:extent>
<esri:ArcGISDynamicMapServiceLayer
url="http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StatesCitiesRivers_USA/MapServer"/>
<esri:GraphicsLayer id="myGraphicsLayer"/>
</esri:Map>
</mx:Application>
Hi Robert,
I am using the sample which you have given in this thread..Its working fine for few layers but the same code fails when i try to do attribute query on a particular layer. can u please help me with the issue.
I am using Bing maps as the basemap and the code shows wrong output for an attribute query.