root/trunk/as2/lib/com/modestmaps/mapproviders/OpenStreetMapProvider.as

Revision 292, 1.7 kB (checked in by migurski, 1 year ago)

Added Id keywords all over the place

  • Property svn:keywords set to Id
Line 
1 /**
2  * MapProvider for Open Street Map data.
3  *
4  * @author migurski
5  * $Id$
6  */
7  
8 import org.casaframework.event.DispatchableInterface;
9
10 import com.modestmaps.core.Coordinate;
11 import com.modestmaps.geo.MercatorProjection;
12 import com.modestmaps.geo.Transformation;
13 import com.modestmaps.mapproviders.AbstractImageBasedMapProvider;
14 import com.modestmaps.mapproviders.IMapProvider;
15
16 class com.modestmaps.mapproviders.OpenStreetMapProvider
17 extends AbstractImageBasedMapProvider
18 implements IMapProvider, DispatchableInterface
19 {
20     public function OpenStreetMapProvider()
21     {
22         super();
23
24             // see: http://modestmaps.mapstraction.com/trac/wiki/TileCoordinateComparisons#TileGeolocations
25             var t:Transformation = new Transformation(1.068070779e7, 0, 3.355443185e7,
26                                                           0, -1.068070890e7, 3.355443057e7);
27                                                          
28         __projection = new MercatorProjection(26, t);
29
30         __topLeftOutLimit = new Coordinate(0, Number.NEGATIVE_INFINITY, 0);
31         __bottomRightInLimit = (new Coordinate(1, Number.POSITIVE_INFINITY, 0)).zoomTo(17);
32     }
33
34     public function toString() : String
35     {
36         return "OPEN_STREET_MAP";
37     }
38
39     private function getTileUrl(coord:Coordinate):String
40     {
41         var sourceCoord:Coordinate = sourceCoordinate(coord);
42         return 'http://tile.openstreetmap.org/'+(sourceCoord.zoom)+'/'+(sourceCoord.column)+'/'+(sourceCoord.row)+'.png';
43     }
44
45     public function sourceCoordinate(coord:Coordinate):Coordinate
46     {
47             var wrappedColumn:Number = coord.column % Math.pow(2, coord.zoom);
48
49             while(wrappedColumn < 0)
50                 wrappedColumn += Math.pow(2, coord.zoom);
51                
52         return new Coordinate(coord.row, wrappedColumn, coord.zoom);
53     }
54 }
Note: See TracBrowser for help on using the browser.