// License: GPL. For details, see Readme.txt file. package org.openstreetmap.gui.jmapviewer.tilesources; /** * OSM Tile source. */ public class OsmTileSource { /** * The default "Mapnik" OSM tile source. */ public static class Mapnik extends AbstractOsmTileSource { private static final String PATTERN = "https://%s.tile.openstreetmap.org"; private static final String[] SERVER = {"a", "b", "c"}; private int serverNum; /** * Constructs a new {@code "Mapnik"} tile source. */ public Mapnik() { super("Mapnik", PATTERN, "MAPNIK"); } @Override public String getBaseUrl() { String url = String.format(this.baseUrl, new Object[] {SERVER[serverNum]}); serverNum = (serverNum + 1) % SERVER.length; return url; } } /** * The "Cycle Map" OSM tile source. */ public static class CycleMap extends AbstractOsmTileSource { private static final String PATTERN = "http://%s.tile.opencyclemap.org/cycle"; private static final String[] SERVER = {"a", "b", "c"}; private int serverNum; /** * Constructs a new {@code CycleMap} tile source. */ public CycleMap() { super("Cyclemap", PATTERN, "opencyclemap"); } @Override public String getBaseUrl() { String url = String.format(this.baseUrl, new Object[] {SERVER[serverNum]}); serverNum = (serverNum + 1) % SERVER.length; return url; } @Override public int getMaxZoom() { return 18; } } }