From ffeb8f8b0fab7229919f6a7a933272ca2f8993a0 Mon Sep 17 00:00:00 2001 From: Andy Allan Date: Tue, 16 Nov 2010 15:01:01 +0000 Subject: [PATCH] Create the concept of Marker entities, and use them for bugs --- net/systemeD/halcyon/VectorLayer.as | 9 +++++ net/systemeD/halcyon/connection/Marker.as | 46 +++++++++++++++++++++++ net/systemeD/potlatch2/utils/BugLoader.as | 2 +- 3 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 net/systemeD/halcyon/connection/Marker.as diff --git a/net/systemeD/halcyon/VectorLayer.as b/net/systemeD/halcyon/VectorLayer.as index e8335739..9fcacfe2 100644 --- a/net/systemeD/halcyon/VectorLayer.as +++ b/net/systemeD/halcyon/VectorLayer.as @@ -25,6 +25,8 @@ package net.systemeD.halcyon { public var nodes:Object=new Object(); // | public var relations:Object=new Object(); // | private var pois:Array=[]; // | + + private var markers:Object=new Object(); // markers private var negativeID:Number = -1; /** Create a new VectorLayer @@ -75,6 +77,13 @@ package net.systemeD.halcyon { relations[negativeID]=relation; negativeID--; return relation; } + + public function createMarker(tags:Object,lat:Number,lon:Number:Marker { + var marker:Marker = new Marker(negativeID, 0, tags, true, lat, lon); + markers[negativeID]=node; negativeID--; + return marker; + } + public function registerPOI(node:Node):void { if (pois.indexOf(node)<0) { pois.push(node); } } diff --git a/net/systemeD/halcyon/connection/Marker.as b/net/systemeD/halcyon/connection/Marker.as new file mode 100644 index 00000000..673cba72 --- /dev/null +++ b/net/systemeD/halcyon/connection/Marker.as @@ -0,0 +1,46 @@ +package net.systemeD.halcyon.connection { + + + /** + * A marker is a generic entity that can be used for representing non-Node point features. + * For example, it can be used for displaying bug reports or waypoints on VectorBackground layers + */ + public class Marker extends Entity { + private var _lat:Number; + private var _latproj:Number; + private var _lon:Number; + + public function Marker(id:Number, version:uint, tags:Object, loaded:Boolean, lat:Number, lon:Number) { + super(id, version, tags, loaded, uid, timestamp); + this._lat = lat; + this._latproj = lat2latp(lat); + this._lon = lon; + } + + public function get lat():Number { + return _lat; + } + + public function get latp():Number { + return _latproj; + } + + public function get lon():Number { + return _lon; + } + + public static function lat2latp(lat:Number):Number { + return 180/Math.PI * Math.log(Math.tan(Math.PI/4+lat*(Math.PI/180)/2)); + } + + public static function latp2lat(a:Number):Number { + return 180/Math.PI * (2 * Math.atan(Math.exp(a*Math.PI/180)) - Math.PI/2); + } + + public override function toString():String { + return "Marker("+id+"@"+version+"): "+lat+","+lon+" "+getTagList(); + } + + public override function getType():String { + return 'node'; + } \ No newline at end of file diff --git a/net/systemeD/potlatch2/utils/BugLoader.as b/net/systemeD/potlatch2/utils/BugLoader.as index 43de9e9a..267587f0 100644 --- a/net/systemeD/potlatch2/utils/BugLoader.as +++ b/net/systemeD/potlatch2/utils/BugLoader.as @@ -40,7 +40,7 @@ package net.systemeD.potlatch2.utils { var lon:Number = feature.geometry.coordinates[0]; var lat:Number = feature.geometry.coordinates[1]; trace(lat, lon); - var node:Node = layer.createNode({"name":feature.properties.description,"bug_id":feature.id}, lat, lon); + var node:Node = layer.createMarker({"name":feature.properties.description,"bug_id":feature.id}, lat, lon); layer.registerPOI(node); } layer.paint.updateEntityUIs(layer.getObjectsByBbox(map.edge_l,map.edge_r,map.edge_t,map.edge_b), false, false); -- 2.37.0