<?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.SpatialReference;
import com.esri.ags.events.DrawEvent;
import com.esri.ags.events.GeometryServiceEvent;
import com.esri.ags.geometry.Geometry;
import com.esri.ags.geometry.Polygon;
import com.esri.ags.tasks.supportClasses.BufferParameters;
import mx.rpc.AsyncResponder;
import spark.events.IndexChangeEvent;
var geometrys:Array = [];
protected function buttonbar1_changeHandler(event:IndexChangeEvent):void
{
switch (myButtonBar.selectedItem)
{
case "点":
myDrawTool.activate(com.esri.ags.tools.DrawTool.MAPPOINT);
break;
case "线":
myDrawTool.activate(com.esri.ags.tools.DrawTool.FREEHAND_POLYLINE);
break;
case "面":
myDrawTool.activate(com.esri.ags.tools.DrawTool.FREEHAND_POLYGON);
break;
}
}
protected function button1_clickHandler(event:MouseEvent):void
{
var bufferparameters:BufferParameters = new BufferParameters();//缓冲区分析参数
bufferparameters.distances = [100,300]; //缓冲区距离
bufferparameters.geometries = geometrys; //创建缓冲区几何
bufferparameters.unit = GeometryService.UNIT_KILOMETER;
myGeometryService.buffer(bufferparameters);
}
protected function myDrawTool_drawEndHandler(event:DrawEvent):void
{
var mygeomertry:Geometry = event.graphic.geometry;
geometrys.push(mygeomertry);
}
protected function myGeometryService_bufferCompleteHandler(event:GeometryServiceEvent):void
{
for each (var geometry:Polygon in event.result)
{
var graphic:Graphic = new Graphic();
graphic.geometry = geometry;
myGraphicsLayer.add(graphic);
}
}
]]>
</fx:Script>
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
<esri:GeometryService bufferComplete="myGeometryService_bufferCompleteHandler(event)" id="myGeometryService" url="http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/Geometry/GeometryServer" />
<esri:DrawTool drawEnd="myDrawTool_drawEndHandler(event)" id="myDrawTool" map="{myMap}" graphicsLayer="{myGraphicsLayer}" />
</fx:Declarations>
<esri:Map id="myMap">
<esri:ArcGISTiledMapServiceLayer url="http://server.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer" />
<esri:GraphicsLayer id="myGraphicsLayer" />
</esri:Map>
<s:ButtonBar id="myButtonBar" x="75" y="11" change="buttonbar1_changeHandler(event)">
<s:ArrayCollection>
<fx:String>点</fx:String>
<fx:String>线</fx:String>
<fx:String>面</fx:String>
</s:ArrayCollection>
</s:ButtonBar>
<s:Button x="289" y="11" click="button1_clickHandler(event)" label="计算缓冲区"/>
</s:Application>