package mobac.mapsources.mapspace; import java.awt.Point; import java.awt.geom.Point2D; import java.awt.geom.Point2D.Double; public class GeoLatlongPower2MapSpace extends MercatorPower2MapSpace { protected GeoLatlongPower2MapSpace(int tileSize) { super(tileSize); } @Override public int cLonToX(double lon, int zoom) { int mp = getMaxPixels(zoom); int x = (int) ((mp * (lon + 180l)) / 360l); x = Math.min(x, mp - 1); return x; } @Override public int cLatToY(double lat, int zoom) { int mp = getMaxPixels(zoom) / 2; int y = (int) ((mp * (-lat + 90l)) / 180l); y = Math.min(y, mp - 1); return y; } @Override public double cXToLon(int x, int zoom) { return ((360d * x) / getMaxPixels(zoom)) - 180.0; } @Override public double cYToLat(int y, int zoom) { int mp = getMaxPixels(zoom) / 2; y = Math.min(y, mp - 1); return 90.0 - ((180d * y) / (getMaxPixels(zoom) / 2)); } @Override public Point cLonLatToXY(double lon, double lat, int zoom) { Point p = new Point(); p.x = cLonToX(lon, zoom); p.y = cLatToY(lat, zoom); return p; } @Override public Double cXYToLonLat(int x, int y, int zoom) { Point2D.Double p = new Point2D.Double(); p.x = cXToLon(x, zoom); p.y = cYToLat(y, zoom); return p; } @Override public MapSpaceType getMapSpaceType() { return MapSpaceType.msGeoLatlong; } }