Created
January 27, 2011 20:07
-
-
Save odoe/799135 to your computer and use it in GitHub Desktop.
Sample component of using NativeMappedSignal with ESRI DrawTool and Graphics
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package net.odoe.nmsExample.components | |
{ | |
import com.esri.ags.Graphic; | |
import com.esri.ags.Map; | |
import com.esri.ags.events.DrawEvent; | |
import com.esri.ags.layers.GraphicsLayer; | |
import com.esri.ags.tools.DrawTool; | |
import flash.events.Event; | |
import flash.events.MouseEvent; | |
import org.osflash.signals.natives.NativeMappedSignal; | |
import spark.components.Button; | |
import spark.components.supportClasses.SkinnableComponent; | |
[Event(name="mapChange",type="flash.events.Event")] | |
public class MapComp extends SkinnableComponent | |
{ | |
public static const MAP_CHANGE_EVENT:String = "mapChange"; | |
public function MapComp() | |
{ | |
super(); | |
} | |
[SkinPart(required="true")] | |
public var btnLine:Button; | |
[SkinPart(required="true")] | |
public var btnPoly:Button; | |
private var _map:Map; | |
[Bindable(event="mapChange")] | |
public function get map():Map | |
{ | |
return _map; | |
} | |
public function set map(value:Map):void | |
{ | |
if (_map != value) | |
{ | |
_map = value; | |
glayer = new GraphicsLayer(); | |
_map.addLayer(glayer); | |
drawTool = new DrawTool(map); | |
// This is nice method of pulling data from the event | |
// and transforming it into something the rest | |
// of your application actually cares about | |
drawEnded = new NativeMappedSignal(drawTool, DrawEvent.DRAW_END, DrawEvent, Graphic).mapTo( | |
function(event:DrawEvent):Graphic | |
{ | |
return event.graphic; | |
}); | |
drawEnded.add(onEndDrawing); | |
dispatchEvent(new Event(MAP_CHANGE_EVENT)); | |
} | |
} | |
protected var drawEnded:NativeMappedSignal; | |
protected var drawLineStarted:NativeMappedSignal; | |
protected var drawPolyStarted:NativeMappedSignal; | |
protected var drawTool:DrawTool; | |
protected var glayer:GraphicsLayer; | |
protected function onEndDrawing(graphic:Graphic):void | |
{ | |
glayer.add(graphic); | |
} | |
protected function onStartDrawing(drawType:String):void | |
{ | |
drawTool.deactivate(); | |
drawTool.activate(drawType); | |
} | |
override protected function partAdded(partName:String, instance:Object):void | |
{ | |
super.partAdded(partName,instance); | |
if (instance == btnPoly) | |
{ | |
drawPolyStarted = new NativeMappedSignal(btnPoly, MouseEvent.CLICK, MouseEvent, String).mapTo(DrawTool.EXTENT); | |
drawPolyStarted.add(onStartDrawing); | |
} | |
else if (instance == btnLine) | |
{ | |
drawLineStarted = new NativeMappedSignal(btnLine, MouseEvent.CLICK, MouseEvent, String).mapTo(DrawTool.POLYLINE); | |
drawLineStarted.add(onStartDrawing); | |
} | |
} | |
override protected function partRemoved(partName:String, instance:Object):void | |
{ | |
super.partRemoved(partName,instance); | |
if (instance == btnPoly) | |
{ | |
drawPolyStarted.removeAll(); | |
drawPolyStarted = null; | |
} | |
else if (instance == btnLine) | |
{ | |
drawLineStarted.removeAll(); | |
drawLineStarted = null; | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment