<mx:HDividedBox width="100%" height="100%">
- <mx:VBox height="100%">
+ <mx:VBox height="50%">
<mx:Button label="+" click="theMap.zoomIn();"/>
<mx:Button label="-" click="theMap.zoomOut();"/>
</mx:VBox>
import flash.display.Sprite;
import mx.core.IChildList;
import mx.containers.Canvas;
+ import mx.core.Application;
public var theMap:Map;
var b:Canvas = new Canvas();
b.height=200; b.width=200;
b.setStyle("backgroundColor", 0xFFFFEA);
- //var b:Sprite=new Sprite();
- //b.graphics.beginFill(0xFFFFEA,100);
- //b.graphics.drawRect(0,0,200,200);
- //b.graphics.endFill();
_root.addChild(b);
// add map
// keyboard event attached to stage
stage.addEventListener(KeyboardEvent.KEY_UP, theMap.keyUpHandler);
+ // example listener event
+ var myListenerObj:Object = new Object();
+ myListenerObj.mapHandler=function(event:MapEvent):void {
+ Globals.vars.debug.appendText("Download event fired - "+event.minlat+","+event.minlon+"\n");
+ };
+ theMap.addEventListener(MapEvent.DOWNLOAD, myListenerObj.mapHandler);
+
// add debug field
var t:TextField=new TextField();
t.width=400; t.height=100; t.border=true;
// (typically from whichways, but will want to add more connections)
public function download():void {
- var e:MapEvent = new MapEvent("download",edge_l,edge_r,edge_t,edge_b);
- this.dispatchEvent(e);
+ this.dispatchEvent(new MapEvent(MapEvent.DOWNLOAD,edge_l,edge_r,edge_t,edge_b));
if (edge_l>=bigedge_l && edge_r<=bigedge_r &&
edge_b>=bigedge_b && edge_t<=bigedge_t) { return; } // we have already loaded this area, so ignore
--- /dev/null
+package net.systemeD.halcyon {
+
+ import flash.events.Event;
+
+ public class MapEvent extends Event {
+
+ public static const DOWNLOAD:String = "download";
+ public var minlon:Number, maxlon:Number, maxlat:Number, minlat:Number;
+
+ public function MapEvent(eventname:String, minlon:Number, maxlon:Number, maxlat:Number, minlat:Number) {
+ super(eventname);
+ this.minlat = minlat;
+ this.minlon = minlon;
+ this.maxlat = maxlat;
+ this.maxlon = maxlon;
+ }
+ }
+
+}
pathlength=0;
patharea=0;
+ lx = way.getNode(way.length-1).lon;
+ ly = way.getNode(way.length-1).latp;
for ( var i:uint = 0; i < way.length; i++ ) {
var node:Node = way.getNode(i);
var latp:Number = node.latp;
var lon:Number = node.lon;
- if ( !isNaN(lx) ) {
- pathlength += Math.sqrt( Math.pow(lon-lx,2)+Math.pow(latp-ly,2) );
- patharea += lx*latp-lon*ly;
- sc = (lx*latp-lon*ly);
- cx += (lx+lon)*sc;
- cy += (ly+latp)*sc;
- }
+ if ( i>0 ) { pathlength += Math.sqrt( Math.pow(lon-lx,2)+Math.pow(latp-ly,2) ); }
+ sc = (lx*latp-lon*ly)*map.scalefactor;
+ cx += (lx+lon)*sc;
+ cy += (ly+latp)*sc;
+ patharea += sc;
lx=lon; ly=latp;
}
pathlength*=map.scalefactor;
- patharea*=map.scalefactor/2;
- if (patharea>0 && way.isArea()) {
+ patharea/=2;
+ if (patharea!=0 && way.isArea()) {
centroid_x=map.lon2coord(cx/patharea/6);
centroid_y=map.latp2coord(cy/patharea/6);
} else if (pathlength>0) {
}
public function isArea():Boolean {
- return nodes[0]==nodes[nodes.length-1] && nodes.length>2;
+ return (nodes[0].id==nodes[nodes.length-1].id && nodes.length>2);
}
}