Index: applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/tilesources/OsmTileSource.java
===================================================================
--- applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/tilesources/OsmTileSource.java	(revision 33314)
+++ applications/viewer/jmapviewer/src/org/openstreetmap/gui/jmapviewer/tilesources/OsmTileSource.java	(revision 33320)
@@ -72,9 +72,6 @@
      *
      * Template for thunderforest.com.
-     * Requires registration of an API key (see {@link #API_KEY}).
      */
-    public static class TransportMap extends AbstractOsmTileSource {
-
-        private static final String API_KEY = "API_KEY_HERE";
+    public abstract static class TransportMap extends AbstractOsmTileSource {
 
         private static final String PATTERN = "https://%s.tile.thunderforest.com/transport";
@@ -90,4 +87,12 @@
             super("OSM Transport Map", PATTERN, "osmtransportmap");
         }
+
+        /**
+         * Get the thunderforest API key.
+         *
+         * Needs to be registered at their web site.
+         * @return the API key
+         */
+        protected abstract String getApiKey();
 
         @Override
@@ -105,5 +110,5 @@
         @Override
         public String getTileUrl(int zoom, int tilex, int tiley) throws IOException {
-            return this.getBaseUrl() + getTilePath(zoom, tilex, tiley) + "?apikey=" + API_KEY;
+            return this.getBaseUrl() + getTilePath(zoom, tilex, tiley) + "?apikey=" + getApiKey();
         }
 
