+
+ private function dragPOI(event:MouseEvent, tags:Array):void {
+ // Get the drag initiator component from the event object.
+ var dragInitiator:Image = event.currentTarget as Image;
+ var dragSource:DragSource = new DragSource();
+ dragSource.addData(tags, 'tags');
+
+ var dragProxy:Image = new Image();
+ dragProxy.source = event.currentTarget.source;
+
+ DragManager.doDrag(dragInitiator, dragSource, event, dragProxy);
+ }
+
+ private function dragEnterHandler(event:DragEvent):void {
+ // Get the drop target component from the event object.
+ var dropTarget:Canvas=event.currentTarget as Canvas;
+ // Accept the drag only if the user is dragging poi with tags
+ if (event.dragSource.hasFormat('tags'))
+ {
+ DragManager.acceptDragDrop(dropTarget);
+ }
+ }
+
+ private function dragDropHandler(event:DragEvent):void {
+ // Get the data identified by the color format from the drag source.
+ // Blame http://www.adobe.com/devnet/flex/quickstart/adding_drag_and_drop/#manual
+ // for whatever horrid abuse of "color format" this is doing
+ var tags:Array = event.dragSource.dataForFormat('tags') as Array;
+ var mapLoc:Point = Globals.vars.root.globalToLocal(new Point(event.stageX, event.stageY));
+ var lat:Number = Globals.vars.root.coord2lat(mapLoc.y);
+ var lon:Number = Globals.vars.root.coord2lon(mapLoc.x);
+ var node:Node = Connection.getConnectionInstance().createNode({}, lat, lon);
+ for each( var tag:Array in tags ) {
+ node.setTag(tag[0],tag[1]);
+ }
+ }
+