<?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.Graphic;
import com.esri.ags.events.DrawEvent;
import com.esri.ags.events.GeometryServiceEvent;
import com.esri.ags.geometry.MapPoint;
import com.esri.ags.tasks.supportClasses.RelationParameters;
import mx.controls.Alert;
import spark.events.IndexChangeEvent;
var points:Array=[];
var polygons:Array = [];
protected function btnbar1_changeHandler(event:IndexChangeEvent):void
{
switch (btnbar1.selectedItem)
{
case "点":
myDrawtool.activate(com.esri.ags.tools.DrawTool.MAPPOINT);
break;
case "面":
myDrawtool.activate(com.esri.ags.tools.DrawTool.POLYGON);
break;
}
}
protected function button1_clickHandler(event:MouseEvent):void
{
myDrawtool.deactivate()//释放DrawTool画图
var rep:RelationParameters = new RelationParameters();
rep.geometries2 = polygons;
rep.geometries1 = points;
rep.spatialRelationship = RelationParameters.SPATIAL_REL_WITHIN;
gs.relation(rep);
}
protected function myDrawtool_drawEndHandler(event:DrawEvent):void
{
switch (btnbar1.selectedItem)
{
case "点":
points.push(event.graphic.geometry);
break;
case "面":
polygons.push(event.graphic.geometry);
break;
}
}
protected function gs_relationCompleteHandler(event:GeometryServiceEvent):void
{
var result:Array = event.result as Array;
var graphics:ArrayCollection = ArrayCollection(myGraphicsLayer.graphicProvider);
// highlight the geometries within the polygon.
for each (var obj:Object in result)
{
var mappoint:MapPoint = MapPoint(obj.geometry1);
for each (var grapic:Graphic in graphics)
{
if (grapic.geometry is MapPoint)
{
var graphicMapPoint:MapPoint = MapPoint(grapic.geometry);
if (mappoint.x == graphicMapPoint.x && mappoint.y == graphicMapPoint.y)
{
grapic.symbol = blueSquareSMS;
break;
}
}
}
}
}
]]>
</fx:Script>
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
<esri:GeometryService relationComplete="gs_relationCompleteHandler(event)" id="gs" url="http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Geometry/GeometryServer" showBusyCursor="true" />
<esri:DrawTool drawEnd="myDrawtool_drawEndHandler(event)" id="myDrawtool" map="{myMap}" graphicsLayer="{myGraphicsLayer}" />
<esri:SimpleMarkerSymbol id="blueSquareSMS"
alpha="0.7"
color="0x0000FF"
size="8"
style="square"/>
</fx:Declarations>
<esri:Map id="myMap">
<esri:ArcGISTiledMapServiceLayer url="http://server.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer" />
<esri:GraphicsLayer id="myGraphicsLayer" />
</esri:Map>
<s:ButtonBar x="53" y="10" id="btnbar1" change="btnbar1_changeHandler(event)">
<s:ArrayCollection>
<fx:String>点</fx:String>
<fx:String>面</fx:String>
</s:ArrayCollection>
</s:ButtonBar>
<s:Button x="199" y="10" label="计算关系" click="button1_clickHandler(event)"></s:Button>
</s:Application>