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}