jmuguy, Here is an example that I got working from yours. I changed a couple of things.<mx:Application
xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:esri="http://www.esri.com/2008/ags"
layout="vertical" styleName="plain"
pageTitle="GeometryService">
<mx:Script>
<![CDATA[
import com.esri.ags.events.GeometryServiceEvent;
import com.esri.ags.Graphic;
import com.esri.ags.tasks.FeatureSet;
import com.esri.ags.events.QueryEvent;
import com.esri.ags.tasks.Query;
import mx.controls.Alert;
import mx.rpc.AsyncResponder;
import mx.utils.ObjectUtil;
private var graphics1:Array;
private var graphics2:Array;
private function queryCities():void
{
cursorManager.setBusyCursor();
graphics1 = new Array();
var query:Query = new Query();
query.geometry = myMap.extent;
query.where = "OBJECTID <> 0";
query.outFields = ["NAME"];
query.returnGeometry = true;
queryCitiesTask.execute(query,new AsyncResponder(queryCitiesResult,onFault));
function queryCitiesResult(result:FeatureSet,token:Object=null):void
{
for each(var g:Graphic in result.features)
{
graphics1.push(g);
}
queryProvince();
}
}
private function queryProvince():void
{
graphics2 = new Array();
var query:Query = new Query();
query.geometry = myMap.extent;
query.where = "STATE_NAME like '%"+txtInput.text+"%'";
query.outFields=["STATE_NAME"];
query.returnGeometry = true;
queryProvinceTask.execute(query,new AsyncResponder(queryProvinceResult,onFault));
function queryProvinceResult(result:FeatureSet,token:Object = null):void
{
var g:Graphic = result.features[0];
graphics2.push(g);
callLater(doRelate,null);
}
}
private function doRelate():void
{
geoService.relation(graphics1,graphics2,GeometryService.SPATIAL_REL_WITHIN,null);
}
private function onFault(info:Object,token:Object = null):void
{
Alert.show(info.toString(),"ERROR");
cursorManager.removeBusyCursor();
}
private function onRelationComplete(event:GeometryServiceEvent):void
{
var relation:Array = event.relations;
myGraphicsLayer.clear();
//trace(ObjectUtil.toString(relation));
for(var i:int=0;i<relation.length;i++)
{
var g:Graphic = relation.graphic1;
myGraphicsLayer.add(g);
}
cursorManager.removeBusyCursor();
}
]]>
</mx:Script>
<esri:GeometryService id="geoService" fault="onFault(event)" relationComplete="onRelationComplete(event)" url="http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Geometry/GeometryServer"/>
<esri:QueryTask id="queryCitiesTask" url="http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Census_USA/MapServer/3"/>
<esri:QueryTask id="queryProvinceTask" url="http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Census_USA/MapServer/5"/>
<mx:HBox horizontalAlign="center" width="100%">
<mx:Label id="lab" text="Please input the name" fontWeight="bold"/>
<mx:TextInput id="txtInput" text="Alabama"/>
<mx:Button id="btnQuery" label="Query" click="queryCities()"/>
</mx:HBox>
<esri:Map id="myMap" scaleBarVisible="false" logoVisible="false">
<esri:ArcGISDynamicMapServiceLayer url="http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Census_USA/MapServer"/>
<esri:GraphicsLayer id="myGraphicsLayer"/>
</esri:Map>
</mx:Application>