package org.openstreetmap.gui.jmapviewer; import org.openstreetmap.gui.jmapviewer.interfaces.TileSource; public class OsmTileSource { public static final String MAP_MAPNIK = "http://tile.openstreetmap.org"; public static final String MAP_OSMA = "http://tah.openstreetmap.org/Tiles"; public static abstract class AbstractOsmTileSource implements TileSource { protected String NAME; protected String BASE_URL; public AbstractOsmTileSource(String name, String base_url) { NAME = name; BASE_URL = base_url; } public String getName() { return NAME; } public int getMaxZoom() { return 18; } public int getMinZoom() { return 0; } public String getExtension() { return "png"; } public String getTilePath(int zoom, int tilex, int tiley) { return "/" + zoom + "/" + tilex + "/" + tiley + "." + getExtension(); } public String getBaseUrl() { return this.BASE_URL; } public String getTileUrl(int zoom, int tilex, int tiley) { return this.getBaseUrl() + getTilePath(zoom, tilex, tiley); } @Override public String toString() { return getName(); } public String getTileType() { return "png"; } } public static class Mapnik extends AbstractOsmTileSource { public Mapnik() { super("Mapnik", MAP_MAPNIK); } public TileUpdate getTileUpdate() { return TileUpdate.IfNoneMatch; } } public static class CycleMap extends AbstractOsmTileSource { private static final String PATTERN = "http://%s.andy.sandbox.cloudmade.com/tiles/cycle"; private static final String[] SERVER = { "a", "b", "c" }; private int SERVER_NUM = 0; public CycleMap() { super("OSM Cycle Map", PATTERN); } @Override public String getBaseUrl() { String url = String.format(this.BASE_URL, new Object[] { SERVER[SERVER_NUM] }); SERVER_NUM = (SERVER_NUM + 1) % SERVER.length; return url; } public int getMaxZoom() { return 17; } public TileUpdate getTileUpdate() { return TileUpdate.LastModified; } } public static abstract class OsmaSource extends AbstractOsmTileSource { String osmaSuffix; public OsmaSource(String name, String osmaSuffix) { super(name, MAP_OSMA); this.osmaSuffix = osmaSuffix; } public int getMaxZoom() { return 17; } @Override public String getBaseUrl() { return MAP_OSMA + "/" + osmaSuffix; } public TileUpdate getTileUpdate() { return TileUpdate.IfModifiedSince; } } public static class TilesAtHome extends OsmaSource { public TilesAtHome() { super("TilesAtHome", "tile"); } } public static class Maplint extends OsmaSource { public Maplint() { super("Maplint", "maplint"); } } }