Skip to content

Instantly share code, notes, and snippets.

@odoe
Created December 23, 2010 14:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save odoe/753059 to your computer and use it in GitHub Desktop.
Save odoe/753059 to your computer and use it in GitHub Desktop.
Component that will Magnify a source ESRI Map.
package org.lacsd.sf.view.components {
import com.esri.ags.Map;
import com.esri.ags.events.MapEvent;
import com.esri.ags.geometry.MapPoint;
import com.esri.ags.layers.ArcGISDynamicMapServiceLayer;
import flash.events.Event;
import mx.collections.ArrayCollection;
import mx.logging.ILogger;
import org.lacsd.util.LogUtil;
import spark.components.supportClasses.SkinnableComponent;
[Event(name="sourceMapChange",type="flash.events.Event")]
public class MagnifyWindow extends SkinnableComponent {
public static const SOURCEMAP_CHANGE_EVENT:String = "sourceMapChange";
protected static const logger:ILogger = LogUtil.getLogger(MagnifyWindow);
public function MagnifyWindow() {
super();
}
[SkinPart(required="true")]
public var map:Map;
[Bindable]
protected var mapLayers:ArrayCollection;
private var _sourceMap:Map;
private function onMapLoad_handler(event:MapEvent):void {
if (sourceMap) {
map.logoVisible = false;
map.extent = sourceMap.extent;
map.scale = 1128;
map.removeEventListener(MapEvent.LOAD, onMapLoad_handler);
}
}
override protected function partAdded(partName:String, instance:Object):void {
super.partAdded(partName,instance);
if (instance == map) {
map.addEventListener(MapEvent.LOAD, onMapLoad_handler, false, 0, true);
map.layers = mapLayers;
}
}
public function addOperationalLayer(dl:ArcGISDynamicMapServiceLayer):void {
if (!mapLayers)
logger.warn("mapLayers ArrayCollection is null. Add detailed layer before operational layers");
else {
var lyr:ArcGISDynamicMapServiceLayer = new ArcGISDynamicMapServiceLayer(dl.url);
mapLayers.addItem(lyr);
}
}
public function parentContainerCenterPosition(pX:Number, pY:Number):void {
var mp:MapPoint = sourceMap.toMapFromStage(pX, pY);
map.centerAt(mp);
}
public function setDetailedLayer(dl:ArcGISDynamicMapServiceLayer):void {
mapLayers = new ArrayCollection();
var detail:ArcGISDynamicMapServiceLayer = new ArcGISDynamicMapServiceLayer(dl.url);
mapLayers.addItem(detail);
}
[Bindable(event="sourceMapChange")]
public function get sourceMap():Map {
return _sourceMap;
}
public function set sourceMap(value:Map):void {
if (_sourceMap != value) {
_sourceMap = value;
dispatchEvent(new Event(SOURCEMAP_CHANGE_EVENT));
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment