001// License: GPL. For details, see Readme.txt file.
002package org.openstreetmap.gui.jmapviewer.tilesources;
003
004/**
005 * OSM Tile source.
006 */
007public class OsmTileSource {
008
009    /**
010     * The default "Mapnik" OSM tile source.
011     */
012    public static class Mapnik extends AbstractOsmTileSource {
013
014        private static final String PATTERN = "https://%s.tile.openstreetmap.org";
015
016        private static final String[] SERVER = {"a", "b", "c"};
017
018        private int serverNum;
019
020        /**
021         * Constructs a new {@code "Mapnik"} tile source.
022         */
023        public Mapnik() {
024            super("Mapnik", PATTERN, "MAPNIK");
025        }
026
027        @Override
028        public String getBaseUrl() {
029            String url = String.format(this.baseUrl, new Object[] {SERVER[serverNum]});
030            serverNum = (serverNum + 1) % SERVER.length;
031            return url;
032        }
033    }
034
035    /**
036     * The "Cycle Map" OSM tile source.
037     */
038    public static class CycleMap extends AbstractOsmTileSource {
039
040        private static final String PATTERN = "http://%s.tile.opencyclemap.org/cycle";
041
042        private static final String[] SERVER = {"a", "b", "c"};
043
044        private int serverNum;
045
046        /**
047         * Constructs a new {@code CycleMap} tile source.
048         */
049        public CycleMap() {
050            super("Cyclemap", PATTERN, "opencyclemap");
051        }
052
053        @Override
054        public String getBaseUrl() {
055            String url = String.format(this.baseUrl, new Object[] {SERVER[serverNum]});
056            serverNum = (serverNum + 1) % SERVER.length;
057            return url;
058        }
059
060        @Override
061        public int getMaxZoom() {
062            return 18;
063        }
064    }
065}