Changeset 32759 in osm for applications/viewer/jmapviewer
- Timestamp:
- 2016-08-02T22:18:57+02:00 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/tilesources/ScanexTileSource.java
r32602 r32759 2 2 package org.openstreetmap.gui.jmapviewer.tilesources; 3 3 4 import java.awt.Point; 4 5 import java.util.Random; 5 6 7 import org.openstreetmap.gui.jmapviewer.Coordinate; 6 8 import org.openstreetmap.gui.jmapviewer.OsmMercator; 9 import org.openstreetmap.gui.jmapviewer.TileXY; 10 import org.openstreetmap.gui.jmapviewer.interfaces.ICoordinate; 7 11 8 12 /** … … 21 25 private static final int DEFAULT_MAXZOOM = 14; 22 26 private static final String API_KEY = "4018C5A9AECAD8868ED5DEB2E41D09F7"; 23 24 // Latitude to Y and back calculations.25 26 /** eccentricity of Earth's ellipsoid */27 private static double E = 0.0818191908426;28 27 29 28 private enum ScanexLayer { … … 89 88 } 90 89 90 // Latitude to Y and back calculations. 91 private static double RADIUS_E = 6378137; /* radius of Earth at equator, 92 m */ 93 private static double EQUATOR = 40075016.68557849; /* equator length, m */ 94 private static double E = 0.0818191908426; /* eccentricity of Earth's ellipsoid */ 95 96 @Override 97 public Point latLonToXY(double lat, double lon, int zoom) { 98 return new Point( 99 (int) osmMercator.lonToX(lon, zoom), 100 (int) latToTileY(lat, zoom) 101 ); 102 } 103 104 @Override 105 public ICoordinate xyToLatLon(int x, int y, int zoom) { 106 return new Coordinate( 107 tileYToLat((double) y, zoom), 108 osmMercator.xToLon(x, zoom) 109 ); 110 } 111 112 @Override 113 public TileXY latLonToTileXY(double lat, double lon, int zoom) { 114 return new TileXY( 115 osmMercator.lonToX(lon, zoom) / getTileSize(), 116 latToTileY(lat, zoom) 117 ); 118 } 119 120 @Override 121 public ICoordinate tileXYToLatLon(int x, int y, int zoom) { 122 return new Coordinate( 123 tileYToLat((double) y, zoom), 124 osmMercator.xToLon(x * getTileSize(), zoom) 125 ); 126 } 127 128 private double latToTileY(double lat, int zoom) { 129 double tmp = Math.tan(Math.PI/4 * (1 + lat/90)); 130 double pow = Math.pow(Math.tan(Math.PI/4 + Math.asin(E * Math.sin(Math.toRadians(lat)))/2), E); 131 132 return (EQUATOR/2 - (RADIUS_E * Math.log(tmp/pow))) * Math.pow(2.0, zoom) / EQUATOR; 133 } 134 91 135 /* 92 136 * To solve inverse formula latitude = f(y) we use
Note:
See TracChangeset
for help on using the changeset viewer.