<?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:esri="http://www.esri.com/2008/ags"
pageTitle="Buffer using the Geometry Service">
<!--
This sample creates buffers around the center of the map. This example just draws the buffers,
but the buffers could also be used to perform a task such as returning a list of addresses of
people who live within the buffered area.
-->
<s:controlBarLayout>
<s:HorizontalLayout horizontalAlign="center"
paddingBottom="7"
paddingTop="7"/>
</s:controlBarLayout>
<s:controlBarContent>
<s:Button click="bufferCenterOfMap()" label="Buffer Center Of Map"/>
</s:controlBarContent>
<fx:Declarations>
<esri:SimpleFillSymbol id="sfs" color="0xFF0000">
<esri:SimpleLineSymbol color="0x000000"/>
</esri:SimpleFillSymbol>
<esri:GeometryService id="myGeometryService" url="http://sampleserver3.arcgisonline.com/ArcGIS/rest/services/Geometry/GeometryServer"/>
</fx:Declarations>
<fx:Script>
<![CDATA[
import com.esri.ags.Graphic;
import com.esri.ags.SpatialReference;
import com.esri.ags.events.GeometryServiceEvent;
import com.esri.ags.geometry.MapPoint;
import com.esri.ags.geometry.Polygon;
import com.esri.ags.tasks.supportClasses.BufferParameters;
private function bufferCenterOfMap():void
{
var myMapCenterPoint:MapPoint = MapPoint(myMap.extent.center);
var bufferParameters:BufferParameters = new BufferParameters();
// Note: As of version 2.0, the GeometryService input is geometries (instead of graphics).
bufferParameters.geometries = [ myMapCenterPoint ];
bufferParameters.distances = [ 50, 100 ];
// Note: As of version 2.0, the buffer constants have been moved to GeometryService.
bufferParameters.unit = GeometryService.UNIT_KILOMETER;
bufferParameters.bufferSpatialReference = new SpatialReference(4326);
bufferParameters.outSpatialReference = myMap.spatialReference;
myGeometryService.addEventListener(GeometryServiceEvent.BUFFER_COMPLETE, bufferCompleteHandler);
myGeometryService.buffer(bufferParameters);
function bufferCompleteHandler(event:GeometryServiceEvent):void
{
myGeometryService.removeEventListener(GeometryServiceEvent.BUFFER_COMPLETE, bufferCompleteHandler);
// Note: As of version 2.0, GeometryService returns geometries (instead of graphics)
for each (var geometry:Polygon in event.result)
{
var graphic:Graphic = new Graphic();
graphic.geometry = geometry;
graphic.symbol = sfs;
graphicsLayer.add(graphic);
}
}
}
]]>
</fx:Script>
<esri:Map id="myMap"
crosshairVisible="true"
level="3">
<esri:ArcGISTiledMapServiceLayer url="http://server.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer"/>
<esri:GraphicsLayer id="graphicsLayer"/>
</esri:Map>
</s:Application>
<!-- Flex 1.3 Code -->
<?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"
layout="absolute"
pageTitle="Buffer using the Geometry Service"
>
<mx:Script>
<![CDATA[
import com.esri.ags.SpatialReference;
import com.esri.ags.events.GeometryServiceEvent;
import com.esri.ags.tasks.BufferParameters;
import com.esri.ags.Graphic;
import com.esri.ags.geometry.MapPoint;
import com.esri.ags.events.PanEvent;
//mousedown event
private function mouseClickHandler(event:MouseEvent):void
{
if (!event.shiftKey)
{
myMap.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
}
}
private function mouseDownHandler(event:MouseEvent):void
{
myMap.removeEventListener(MouseEvent.MOUSE_UP, mouseDownHandler);
var myMapCenterPoint:Graphic = new Graphic();
myMapCenterPoint.geometry = myMap.toMapFromStage(event.stageX, event.stageY);
var bufferParameters : BufferParameters = new BufferParameters();
bufferParameters.features = [myMapCenterPoint];
bufferParameters.distances = [100,200,600];
bufferParameters.unit = BufferParameters.UNIT_FOOT
bufferParameters.bufferSpatialReference = new SpatialReference(2230);
myGeometryService.addEventListener(GeometryServiceEvent.BUFFER_COMPLETE, bufferCompleteHandler);
myGeometryService.buffer( bufferParameters );
function bufferCompleteHandler( event : GeometryServiceEvent ) : void
{
myGeometryService.removeEventListener(GeometryServiceEvent.BUFFER_COMPLETE, bufferCompleteHandler);
for each ( var graphic : Graphic in event.graphics )
{
graphic.symbol = sfs;
myGraphicsLayer.add( graphic );
}
}
}
public function deactivate():void
{
myMap.removeEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
}
]]>
</mx:Script>
<esri:SimpleFillSymbol id="sfs" color="0xFF0000">
<esri:SimpleLineSymbol color="0x000000"/>
</esri:SimpleFillSymbol>
<esri:GeometryService id="myGeometryService"
url="http://sampleserver2.arcgisonline.com/ArcGIS/rest/services/Geometry/GeometryServer"/>
<mx:Panel width="100%" height="100%">
<mx:ControlBar>
<mx:Button label="Buffer Center Of Map" mouseUp="mouseClickHandler(event)" id="btnBuffer" toolTip="Draw a Polygon"/>
<mx:Button label="Deactivate" width="103" id="btnDeactivate" click="deactivate()"/>
</mx:ControlBar>
<esri:Map id="myMap" >
<esri:ArcGISDynamicMapServiceLayer
url="http://.../ArcGIS/rest/services/....../MapServer"/>
<esri:GraphicsLayer id="myGraphicsLayer"/>
</esri:Map>
</mx:Panel>
</mx:Application>