diff --git a/vtm-android-example/src/org/oscim/android/test/BitmapTileMapActivity.java b/vtm-android-example/src/org/oscim/android/test/BitmapTileMapActivity.java index 035b8812..75408567 100644 --- a/vtm-android-example/src/org/oscim/android/test/BitmapTileMapActivity.java +++ b/vtm-android-example/src/org/oscim/android/test/BitmapTileMapActivity.java @@ -14,6 +14,8 @@ */ package org.oscim.android.test; +import static org.oscim.tiling.source.bitmap.DefaultSources.OPENSTREETMAP; + import org.oscim.android.MapActivity; import org.oscim.android.MapView; import org.oscim.android.cache.TileCache; @@ -22,7 +24,6 @@ import org.oscim.layers.TileGridLayer; import org.oscim.layers.tile.bitmap.BitmapTileLayer; import org.oscim.renderer.MapRenderer; import org.oscim.tiling.TileSource; -import org.oscim.tiling.source.bitmap.DefaultSources; import android.os.Bundle; @@ -33,7 +34,7 @@ public class BitmapTileMapActivity extends MapActivity { protected BitmapTileLayer mBitmapLayer; public BitmapTileMapActivity() { - mTileSource = new DefaultSources.OpenStreetMap(); + mTileSource = OPENSTREETMAP.build(); } public BitmapTileMapActivity(TileSource tileSource) { diff --git a/vtm-android-example/src/org/oscim/android/test/MarkerOverlayActivity.java b/vtm-android-example/src/org/oscim/android/test/MarkerOverlayActivity.java index 4f85160e..62f00e3b 100644 --- a/vtm-android-example/src/org/oscim/android/test/MarkerOverlayActivity.java +++ b/vtm-android-example/src/org/oscim/android/test/MarkerOverlayActivity.java @@ -16,6 +16,8 @@ */ package org.oscim.android.test; +import static org.oscim.tiling.source.bitmap.DefaultSources.STAMEN_TONER; + import java.util.ArrayList; import java.util.List; @@ -27,19 +29,18 @@ import org.oscim.layers.marker.ItemizedLayer.OnItemGestureListener; import org.oscim.layers.marker.MarkerItem; import org.oscim.layers.marker.MarkerItem.HotspotPlace; import org.oscim.layers.marker.MarkerSymbol; -import org.oscim.tiling.source.bitmap.DefaultSources; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.widget.Toast; public class MarkerOverlayActivity extends BitmapTileMapActivity -implements OnItemGestureListener { + implements OnItemGestureListener { private MarkerSymbol mFocusMarker; public MarkerOverlayActivity() { - super(new DefaultSources.StamenToner()); + super(STAMEN_TONER.build()); } @Override @@ -54,7 +55,7 @@ implements OnItemGestureListener { ItemizedLayer markerLayer = new ItemizedLayer(mMap, new ArrayList(), - symbol, this); + symbol, this); mMap.layers().add(markerLayer); diff --git a/vtm-android-example/src/org/oscim/android/test/OsmJsonMapActivity.java b/vtm-android-example/src/org/oscim/android/test/OsmJsonMapActivity.java index 1a2b84b5..ccf6d7f6 100644 --- a/vtm-android-example/src/org/oscim/android/test/OsmJsonMapActivity.java +++ b/vtm-android-example/src/org/oscim/android/test/OsmJsonMapActivity.java @@ -14,6 +14,8 @@ */ package org.oscim.android.test; +import static org.oscim.tiling.source.bitmap.DefaultSources.STAMEN_TONER; + import org.oscim.android.MapActivity; import org.oscim.android.MapView; import org.oscim.layers.TileGridLayer; @@ -25,7 +27,6 @@ import org.oscim.theme.IRenderTheme; import org.oscim.theme.ThemeLoader; import org.oscim.theme.VtmThemes; import org.oscim.tiling.TileSource; -import org.oscim.tiling.source.bitmap.DefaultSources.StamenToner; import org.oscim.tiling.source.geojson.HighroadJsonTileSource; import org.oscim.tiling.source.geojson.OsmBuildingJsonTileSource; import org.oscim.tiling.source.geojson.OsmLanduseJsonTileSource; @@ -49,7 +50,7 @@ public class OsmJsonMapActivity extends MapActivity { mTileSource = new OsmWaterJsonTileSource(); - mMap.setBaseMap(new BitmapTileLayer(mMap, new StamenToner())); + mMap.setBaseMap(new BitmapTileLayer(mMap, STAMEN_TONER.build())); mMap.layers().add(new TileGridLayer(mMap)); IRenderTheme theme = ThemeLoader.load(VtmThemes.OSMARENDER); diff --git a/vtm-android-example/src/org/oscim/android/test/PathOverlayActivity.java b/vtm-android-example/src/org/oscim/android/test/PathOverlayActivity.java index bc887c91..f4b85d5e 100644 --- a/vtm-android-example/src/org/oscim/android/test/PathOverlayActivity.java +++ b/vtm-android-example/src/org/oscim/android/test/PathOverlayActivity.java @@ -16,13 +16,14 @@ */ package org.oscim.android.test; +import static org.oscim.tiling.source.bitmap.DefaultSources.STAMEN_TONER; + import java.util.ArrayList; import java.util.List; import org.oscim.backend.canvas.Color; import org.oscim.core.GeoPoint; import org.oscim.layers.PathLayer; -import org.oscim.tiling.source.bitmap.DefaultSources; import android.os.Bundle; import android.os.SystemClock; @@ -30,7 +31,7 @@ import android.os.SystemClock; public class PathOverlayActivity extends BitmapTileMapActivity { public PathOverlayActivity() { - super(new DefaultSources.StamenToner()); + super(STAMEN_TONER.build()); } @Override @@ -58,7 +59,8 @@ public class PathOverlayActivity extends BitmapTileMapActivity { } }, 50); } - void redraw(){ + + void redraw() { mMap.render(); } @@ -71,7 +73,7 @@ public class PathOverlayActivity extends BitmapTileMapActivity { for (double lat = -90; lat <= 90; lat += 5) { List pts = new ArrayList(); - for (double lon = -180; lon <= 180; lon += 2){ + for (double lon = -180; lon <= 180; lon += 2) { //pts.add(new GeoPoint(lat, lon)); double longitude = lon + (pos * 180); if (longitude < -180) @@ -79,8 +81,8 @@ public class PathOverlayActivity extends BitmapTileMapActivity { if (longitude > 180) longitude -= 360; - double latitude = lat + (pos * 90); - if (latitude< -90) + double latitude = lat + (pos * 90); + if (latitude < -90) latitude += 180; if (latitude > 90) latitude -= 180; diff --git a/vtm-android-example/src/org/oscim/android/test/S3DBMapActivity.java b/vtm-android-example/src/org/oscim/android/test/S3DBMapActivity.java index 70ea4389..f91a9f1a 100644 --- a/vtm-android-example/src/org/oscim/android/test/S3DBMapActivity.java +++ b/vtm-android-example/src/org/oscim/android/test/S3DBMapActivity.java @@ -20,7 +20,11 @@ public class S3DBMapActivity extends BaseMapActivity { mMap.setTheme(VtmThemes.DEFAULT); - TileSource ts = new OSciMap4TileSource("http://opensciencemap.org/tiles/s3db"); + TileSource ts = OSciMap4TileSource.builder() + .url("http://opensciencemap.org/tiles/s3db") + .zoomMin(16) + .zoomMax(16) + .build(); if (USE_CACHE) { mS3dbCache = new TileCache(this, null, "s3db.db"); diff --git a/vtm-playground/src/org/oscim/test/BitmapLayerTest.java b/vtm-playground/src/org/oscim/test/BitmapLayerTest.java index a990ca44..f65460a7 100644 --- a/vtm-playground/src/org/oscim/test/BitmapLayerTest.java +++ b/vtm-playground/src/org/oscim/test/BitmapLayerTest.java @@ -1,13 +1,14 @@ package org.oscim.test; +import static org.oscim.tiling.source.bitmap.DefaultSources.HD_HILLSHADE; +import static org.oscim.tiling.source.bitmap.DefaultSources.OPENSTREETMAP; +import static org.oscim.tiling.source.bitmap.DefaultSources.STAMEN_TONER; +import static org.oscim.tiling.source.bitmap.DefaultSources.STAMEN_WATERCOLOR; + import org.oscim.gdx.GdxMap; import org.oscim.gdx.GdxMapApp; import org.oscim.layers.tile.bitmap.BitmapTileLayer; import org.oscim.renderer.MapRenderer; -import org.oscim.tiling.source.bitmap.DefaultSources.HillShadeHD; -import org.oscim.tiling.source.bitmap.DefaultSources.OpenStreetMap; -import org.oscim.tiling.source.bitmap.DefaultSources.StamenToner; -import org.oscim.tiling.source.bitmap.DefaultSources.StamenWatercolor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -18,23 +19,28 @@ public class BitmapLayerTest extends GdxMap { final Logger log = LoggerFactory.getLogger(BitmapTileLayer.class); BitmapTileLayer mLayer = null; + BitmapTileLayer mShaded = null; @Override protected boolean onKeyDown(int keycode) { if (keycode == Input.Keys.NUM_1) { mMap.layers().remove(mLayer); - mLayer = new BitmapTileLayer(mMap, new OpenStreetMap()); - mMap.layers().set(2, mLayer); + mLayer = new BitmapTileLayer(mMap, OPENSTREETMAP.build()); + mMap.layers().add(mLayer); return true; } else if (keycode == Input.Keys.NUM_2) { mMap.layers().remove(mLayer); - mLayer = new BitmapTileLayer(mMap, new StamenWatercolor()); - mMap.layers().set(2, mLayer); + mLayer = new BitmapTileLayer(mMap, STAMEN_WATERCOLOR.build()); + mMap.layers().add(mLayer); return true; } else if (keycode == Input.Keys.NUM_3) { - mMap.layers().remove(mLayer); - mLayer = new BitmapTileLayer(mMap, new HillShadeHD()); - mMap.layers().set(2, mLayer); + if (mShaded != null) { + mMap.layers().remove(mShaded); + mShaded = null; + } else { + mShaded = new BitmapTileLayer(mMap, HD_HILLSHADE.build()); + mMap.layers().add(mShaded); + } return true; } @@ -45,7 +51,7 @@ public class BitmapLayerTest extends GdxMap { public void createLayers() { MapRenderer.setBackgroundColor(0xff888888); - mLayer = new BitmapTileLayer(mMap, new StamenToner()); + mLayer = new BitmapTileLayer(mMap, STAMEN_TONER.build()); mMap.layers().add(mLayer); } diff --git a/vtm-playground/src/org/oscim/test/MeshTest.java b/vtm-playground/src/org/oscim/test/MeshTest.java index a2a9ad48..27135489 100644 --- a/vtm-playground/src/org/oscim/test/MeshTest.java +++ b/vtm-playground/src/org/oscim/test/MeshTest.java @@ -1,10 +1,11 @@ package org.oscim.test; +import static org.oscim.tiling.source.bitmap.DefaultSources.STAMEN_TONER; + import org.oscim.gdx.GdxMapApp; import org.oscim.layers.tile.bitmap.BitmapTileLayer; import org.oscim.layers.tile.buildings.S3DBLayer; import org.oscim.tiling.TileSource; -import org.oscim.tiling.source.bitmap.DefaultSources; import org.oscim.tiling.source.oscimap4.OSciMap4TileSource; public class MeshTest extends GdxMapApp { @@ -16,7 +17,7 @@ public class MeshTest extends GdxMapApp { //VectorTileLayer l = mMap.setBaseMap(new OSciMap4TileSource()); //mMap.setTheme(VtmThemes.DEFAULT); - mMap.setBaseMap(new BitmapTileLayer(mMap, new DefaultSources.StamenToner())); + mMap.setBaseMap(new BitmapTileLayer(mMap, STAMEN_TONER.build())); TileSource ts = new OSciMap4TileSource("http://opensciencemap.org/tiles/s3db"); S3DBLayer tl = new S3DBLayer(mMap, ts); diff --git a/vtm-playground/src/org/oscim/test/TileRenderTest.java b/vtm-playground/src/org/oscim/test/TileRenderTest.java index e834965a..14affa1d 100644 --- a/vtm-playground/src/org/oscim/test/TileRenderTest.java +++ b/vtm-playground/src/org/oscim/test/TileRenderTest.java @@ -1,5 +1,7 @@ package org.oscim.test; +import static org.oscim.tiling.source.bitmap.DefaultSources.STAMEN_TONER; + import org.oscim.core.MercatorProjection; import org.oscim.gdx.GdxMap; import org.oscim.gdx.GdxMapApp; @@ -15,7 +17,6 @@ import org.oscim.layers.tile.vector.VectorTileLoader; import org.oscim.renderer.MapRenderer; import org.oscim.theme.DebugTheme; import org.oscim.tiling.TileSource; -import org.oscim.tiling.source.bitmap.DefaultSources; import org.oscim.tiling.source.oscimap4.OSciMap4TileSource; public class TileRenderTest extends GdxMap { @@ -114,7 +115,7 @@ public class TileRenderTest extends GdxMap { } } - mMap.setBaseMap(new BitmapTileLayer(mMap, new DefaultSources.StamenToner())); + mMap.setBaseMap(new BitmapTileLayer(mMap, STAMEN_TONER.build())); mMap.layers().add(l); } diff --git a/vtm-playground/src/org/oscim/test/jeo/LayerTest.java b/vtm-playground/src/org/oscim/test/jeo/LayerTest.java index aeacdfca..fd660340 100644 --- a/vtm-playground/src/org/oscim/test/jeo/LayerTest.java +++ b/vtm-playground/src/org/oscim/test/jeo/LayerTest.java @@ -1,5 +1,7 @@ package org.oscim.test.jeo; +import static org.oscim.tiling.source.bitmap.DefaultSources.STAMEN_TONER; + import java.io.IOException; import java.io.InputStream; import java.net.URL; @@ -14,7 +16,6 @@ import org.oscim.layers.OSMIndoorLayer; import org.oscim.layers.TileGridLayer; import org.oscim.layers.tile.bitmap.BitmapTileLayer; import org.oscim.test.JeoTest; -import org.oscim.tiling.source.bitmap.DefaultSources.StamenToner; public class LayerTest extends GdxMap { @@ -24,7 +25,7 @@ public class LayerTest extends GdxMap { @Override public void createLayers() { - mMap.setBaseMap(new BitmapTileLayer(mMap, new StamenToner())); + mMap.setBaseMap(new BitmapTileLayer(mMap, STAMEN_TONER.build())); mMap.layers().add(new TileGridLayer(mMap)); mMap.addTask(new Runnable() { diff --git a/vtm-web-app/src/org/oscim/web/client/GwtMap.java b/vtm-web-app/src/org/oscim/web/client/GwtMap.java index f092bc6d..0c607878 100644 --- a/vtm-web-app/src/org/oscim/web/client/GwtMap.java +++ b/vtm-web-app/src/org/oscim/web/client/GwtMap.java @@ -35,7 +35,6 @@ import org.oscim.theme.VtmThemes; import org.oscim.tiling.TileSource; import org.oscim.tiling.source.bitmap.BitmapTileSource; import org.oscim.tiling.source.bitmap.DefaultSources; -import org.oscim.tiling.source.bitmap.DefaultSources.StamenToner; import org.oscim.tiling.source.oscimap4.OSciMap4TileSource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -90,17 +89,17 @@ class GwtMap extends GdxMap { BitmapTileSource ts; if ("toner".equals(mapName)) - ts = new StamenToner(); + ts = DefaultSources.STAMEN_TONER.build(); else if ("osm".equals(mapName)) - ts = new DefaultSources.OpenStreetMap(); + ts = DefaultSources.OPENSTREETMAP.build(); else if ("watercolor".equals(mapName)) - ts = new DefaultSources.StamenWatercolor(); + ts = DefaultSources.STAMEN_WATERCOLOR.build(); else if ("arcgis-shaded".equals(mapName)) - ts = new DefaultSources.ArcGISWorldShaded(); + ts = DefaultSources.ARCGIS_RELIEF.build(); else if ("imagico".equals(mapName)) - ts = new DefaultSources.ImagicoLandcover(); + ts = DefaultSources.IMAGICO_LANDCOVER.build(); else - ts = new StamenToner(); + ts = DefaultSources.STAMEN_TONER.build(); mMap.setBaseMap(new BitmapTileLayer(mMap, ts)); } else { @@ -123,7 +122,11 @@ class GwtMap extends GdxMap { boolean s3db = mapUrl.params.containsKey("s3db"); if (s3db) { - TileSource ts = new OSciMap4TileSource("http://opensciencemap.org/tiles/s3db"); + TileSource ts = OSciMap4TileSource.builder() + .url("http://opensciencemap.org/tiles/s3db") + .zoomMin(16) + .zoomMax(16) + .build(); mMap.layers().add(new S3DBLayer(mMap, ts)); } if (l != null) { diff --git a/vtm-web/src/org/oscim/gdx/emu/org/oscim/tiling/source/bitmap/BitmapTileSource.java b/vtm-web/src/org/oscim/gdx/emu/org/oscim/tiling/source/bitmap/BitmapTileSource.java index e543929a..afc9d2a6 100644 --- a/vtm-web/src/org/oscim/gdx/emu/org/oscim/tiling/source/bitmap/BitmapTileSource.java +++ b/vtm-web/src/org/oscim/gdx/emu/org/oscim/tiling/source/bitmap/BitmapTileSource.java @@ -24,6 +24,26 @@ import com.google.gwt.user.client.ui.RootPanel; public class BitmapTileSource extends UrlTileSource { static final Logger log = LoggerFactory.getLogger(LwHttp.class); + public static class Builder> extends UrlTileSource.Builder { + + public Builder() { + super(null, "/{Z}/{X}/{Y}.png", 0, 17); + } + + public BitmapTileSource build() { + return new BitmapTileSource(this); + } + } + + protected BitmapTileSource(Builder builder) { + super(builder); + } + + @SuppressWarnings("rawtypes") + public static Builder builder() { + return new Builder(); + } + /** * Create BitmapTileSource for 'url' * diff --git a/vtm/src/org/oscim/tiling/TileSource.java b/vtm/src/org/oscim/tiling/TileSource.java index ee12528c..40e627b5 100644 --- a/vtm/src/org/oscim/tiling/TileSource.java +++ b/vtm/src/org/oscim/tiling/TileSource.java @@ -22,9 +22,44 @@ import org.oscim.layers.tile.bitmap.BitmapTileLayer.FadeStep; public abstract class TileSource { + public abstract static class Builder> { + int minZoom, maxZoom; + FadeStep[] fadeSteps; + + public T zoomMin(int zoom) { + minZoom = zoom; + return self(); + } + + public T zoomMax(int zoom) { + maxZoom = zoom; + return self(); + } + + public T fadeSteps(FadeStep[] fadeSteps) { + this.fadeSteps = fadeSteps; + return self(); + } + + @SuppressWarnings("unchecked") + protected T self() { + return (T) this; + } + + public abstract TileSource build(); + } + protected int mZoomMin = 0; protected int mZoomMax = 20; + protected TileSource() { + } + + protected TileSource(int zoomMin, int zoomMax) { + mZoomMin = zoomMin; + mZoomMax = zoomMax; + } + public abstract ITileDataSource getDataSource(); public abstract OpenResult open(); @@ -35,6 +70,8 @@ public abstract class TileSource { public ITileCache tileCache; + private FadeStep[] mFadeSteps; + /** * Cache MUST be set before TileSource is added to a TileLayer! */ @@ -51,7 +88,7 @@ public abstract class TileSource { } public FadeStep[] getFadeSteps() { - return null; + return mFadeSteps; } public TileSource setOption(String key, String value) { diff --git a/vtm/src/org/oscim/tiling/source/UrlTileSource.java b/vtm/src/org/oscim/tiling/source/UrlTileSource.java index 9f31bed6..c34d2f82 100644 --- a/vtm/src/org/oscim/tiling/source/UrlTileSource.java +++ b/vtm/src/org/oscim/tiling/source/UrlTileSource.java @@ -27,6 +27,40 @@ import org.oscim.tiling.source.LwHttp.LwHttpFactory; public abstract class UrlTileSource extends TileSource { + public abstract static class Builder> extends TileSource.Builder { + protected int zoomMin, zoomMax; + protected String tilePath; + protected String url; + private HttpEngine.Factory engineFactory; + + protected Builder() { + + } + + protected Builder(String url, String tilePath, int zoomMin, int zoomMax) { + this.url = url; + this.tilePath = tilePath; + this.zoomMin = zoomMin; + this.zoomMax = zoomMax; + } + + public T tilePath(String tilePath) { + this.tilePath = tilePath; + return self(); + } + + public T url(String url) { + this.url = url; + return self(); + } + + public T httpFactory(HttpEngine.Factory factory) { + this.engineFactory = factory; + return self(); + } + + } + public final static TileUrlFormatter URL_FORMATTER = new DefaultTileUrlFormatter(); private final URL mUrl; private final String[] mTilePath; @@ -39,19 +73,17 @@ public abstract class UrlTileSource extends TileSource { public String formatTilePath(UrlTileSource tileSource, Tile tile); } - public UrlTileSource(String url, String tilePath, int zoomMin, int zoomMax) { - this(url, tilePath); - mZoomMin = zoomMin; - mZoomMax = zoomMax; + protected UrlTileSource(Builder builder) { + this(builder.url, builder.tilePath, builder.zoomMin, builder.zoomMax); + mHttpFactory = builder.engineFactory; } - /** - * @param urlString 'http://example.com/' - * @param tilePath replacement string for tile coordinates, - * e.g. '{Z}/{X}/{Y}.png' - */ - public UrlTileSource(String urlString, String tilePath) { + protected UrlTileSource(String urlString, String tilePath) { + this(urlString, tilePath, 0, 17); + } + protected UrlTileSource(String urlString, String tilePath, int zoomMin, int zoomMax) { + super(zoomMin, zoomMax); if (tilePath == null) throw new IllegalArgumentException("tilePath cannot be null."); diff --git a/vtm/src/org/oscim/tiling/source/bitmap/BitmapTileSource.java b/vtm/src/org/oscim/tiling/source/bitmap/BitmapTileSource.java index 3e2fc055..b932c824 100644 --- a/vtm/src/org/oscim/tiling/source/bitmap/BitmapTileSource.java +++ b/vtm/src/org/oscim/tiling/source/bitmap/BitmapTileSource.java @@ -18,6 +18,26 @@ import org.slf4j.LoggerFactory; public class BitmapTileSource extends UrlTileSource { static final Logger log = LoggerFactory.getLogger(LwHttp.class); + public static class Builder> extends UrlTileSource.Builder { + + public Builder() { + super(null, "/{Z}/{X}/{Y}.png", 0, 17); + } + + public BitmapTileSource build() { + return new BitmapTileSource(this); + } + } + + protected BitmapTileSource(Builder builder) { + super(builder); + } + + @SuppressWarnings("rawtypes") + public static Builder builder() { + return new Builder(); + } + /** * Create BitmapTileSource for 'url' * @@ -26,15 +46,19 @@ public class BitmapTileSource extends UrlTileSource { * implement getUrlString() for custom formatting. */ public BitmapTileSource(String url, int zoomMin, int zoomMax) { - super(url, "/{Z}/{X}/{Y}.png", zoomMin, zoomMax); + this(url, "/{Z}/{X}/{Y}.png", zoomMin, zoomMax); } public BitmapTileSource(String url, int zoomMin, int zoomMax, String extension) { - super(url, "/{Z}/{X}/{Y}" + extension, zoomMin, zoomMax); + this(url, "/{Z}/{X}/{Y}" + extension, zoomMin, zoomMax); } public BitmapTileSource(String url, String tilePath, int zoomMin, int zoomMax) { - super(url, tilePath, zoomMin, zoomMax); + super(builder() + .url(url) + .tilePath(tilePath) + .zoomMin(zoomMin) + .zoomMax(zoomMax)); } @Override diff --git a/vtm/src/org/oscim/tiling/source/bitmap/DefaultSources.java b/vtm/src/org/oscim/tiling/source/bitmap/DefaultSources.java index f74d5119..2cf1845e 100644 --- a/vtm/src/org/oscim/tiling/source/bitmap/DefaultSources.java +++ b/vtm/src/org/oscim/tiling/source/bitmap/DefaultSources.java @@ -1,6 +1,7 @@ package org.oscim.tiling.source.bitmap; import org.oscim.layers.tile.bitmap.BitmapTileLayer.FadeStep; +import org.oscim.tiling.source.bitmap.BitmapTileSource.Builder; /** * Do not use in applications unless you read through and comply to @@ -8,82 +9,27 @@ import org.oscim.layers.tile.bitmap.BitmapTileLayer.FadeStep; */ public class DefaultSources { - public static class OpenStreetMap extends BitmapTileSource { - public OpenStreetMap() { - super("http://tile.openstreetmap.org", 0, 18); - } - } + public static Builder OPENSTREETMAP = BitmapTileSource.builder() + .url("http://tile.openstreetmap.org") + .zoomMax(18); - public static class OSMTransport extends BitmapTileSource { - public OSMTransport() { - super("http://a.tile.thunderforest.com/transport", 0, 18); - } - } + public static Builder OSM_TRANSPORT = BitmapTileSource.builder() + .url("http://a.tile.thunderforest.com/transport") + .zoomMax(18); - public static class StamenToner extends BitmapTileSource { - public StamenToner() { - super("http://a.tile.stamen.com/toner", 0, 18); - } - } + public static Builder STAMEN_TONER = BitmapTileSource.builder() + .url("http://a.tile.stamen.com/toner") + .zoomMax(18); - public static class StamenWatercolor extends BitmapTileSource { - public StamenWatercolor() { - super("http://a.tile.stamen.com/watercolor", 0, 16); - } - } + public static Builder STAMEN_WATERCOLOR = BitmapTileSource.builder() + .url("http://a.tile.stamen.com/watercolor") + .tilePath("/{Z}/{X}/{Y}.jpg") + .zoomMax(18); - public static class ImagicoLandcover extends BitmapTileSource { - public ImagicoLandcover() { - super("http://www.imagico.de/map/tiles/landcover", 0, 6, ".jpg"); - } - } - - public static class MapQuestAerial extends BitmapTileSource { - public MapQuestAerial() { - super("http://otile1.mqcdn.com/tiles/1.0.0/sat", 0, 8, ".jpg"); - } - - @Override - public FadeStep[] getFadeSteps() { - return fadeSteps; - } - } - - public static class NaturalEarth extends BitmapTileSource { - public NaturalEarth() { - super("http://opensciencemap.org/tiles/ne", 0, 8); - } - - @Override - public FadeStep[] getFadeSteps() { - return fadeSteps; - } - } - - public static class ArcGISWorldShaded extends BitmapTileSource { - public ArcGISWorldShaded() { - super("http://server.arcgisonline.com/ArcGIS/rest/services" + - "/World_Shaded_Relief/MapServer/tile/", - "{Z}/{Y}/{X}", 0, 13); - } - } - - public static class HillShadeHD extends BitmapTileSource { - public HillShadeHD() { - super("http://129.206.74.245:8004/tms_hs.ashx", - "?x={X}&y={Y}&z={Z}", 2, 16); - } - } - - /** - * https://github.com/opensciencemap/vtm/issues/18 - * https://developers.google.com/maps/faq - */ - public static class GoogleMaps extends BitmapTileSource { - public GoogleMaps(String hostName) { - super(hostName, "/vt/x={X}&y={Y}&z={Z}&s=Galileo&scale=2", 1, 20); //jpeg for sat - } - } + public static Builder IMAGICO_LANDCOVER = BitmapTileSource.builder() + .url("http://www.imagico.de/map/tiles/landcover") + .tilePath("/{Z}/{X}/{Y}.jpg") + .zoomMax(6); final static FadeStep[] fadeSteps = new FadeStep[] { new FadeStep(0, 8 - 1, 1, 0.7f), @@ -91,4 +37,38 @@ public class DefaultSources { // fade above zoom max + 2, interpolate 1 to 0 new FadeStep(8 - 1, 8 + 1, 0.7f, 0) }; + + public static Builder MAPQUEST_AERIAL = BitmapTileSource.builder() + .url("http://otile1.mqcdn.com/tiles/1.0.0/sat") + .tilePath("/{Z}/{X}/{Y}.jpg") + .fadeSteps(fadeSteps) + .zoomMax(8); + + public static Builder NE_LANDCOVER = BitmapTileSource.builder() + .url("http://opensciencemap.org/tiles/ne") + .fadeSteps(fadeSteps) + .zoomMax(8); + + public static Builder ARCGIS_RELIEF = BitmapTileSource.builder() + .url("http://server.arcgisonline.com/ArcGIS/rest/services" + + "/World_Shaded_Relief/MapServer/tile/") + .tilePath("{Z}/{Y}/{X}") + .zoomMax(13); + + public static Builder HD_HILLSHADE = BitmapTileSource.builder() + .url("http://129.206.74.245:8004/tms_hs.ashx") + .tilePath("?x={X}&y={Y}&z={Z}") + .zoomMin(2) + .zoomMax(16); + + /** + * https://github.com/opensciencemap/vtm/issues/18 + * https://developers.google.com/maps/faq + */ + + public static Builder GOOGLE_MAPS = BitmapTileSource.builder() + .url("INSERT URL") + .tilePath("/vt/x={X}&y={Y}&z={Z}&s=Galileo&scale=2") + .zoomMin(1) + .zoomMax(20); } diff --git a/vtm/src/org/oscim/tiling/source/mapfile/MapFileTileSource.java b/vtm/src/org/oscim/tiling/source/mapfile/MapFileTileSource.java index 0f735709..48b09d74 100644 --- a/vtm/src/org/oscim/tiling/source/mapfile/MapFileTileSource.java +++ b/vtm/src/org/oscim/tiling/source/mapfile/MapFileTileSource.java @@ -45,6 +45,10 @@ public class MapFileTileSource extends TileSource { File mapFile; RandomAccessFile mInputFile; + public MapFileTileSource() { + super(0, 18); + } + public boolean setMapFile(String filename) { setOption("file", filename); diff --git a/vtm/src/org/oscim/tiling/source/oscimap4/OSciMap4TileSource.java b/vtm/src/org/oscim/tiling/source/oscimap4/OSciMap4TileSource.java index d98597cc..94ad0675 100644 --- a/vtm/src/org/oscim/tiling/source/oscimap4/OSciMap4TileSource.java +++ b/vtm/src/org/oscim/tiling/source/oscimap4/OSciMap4TileSource.java @@ -22,12 +22,35 @@ import org.oscim.tiling.source.UrlTileSource; public class OSciMap4TileSource extends UrlTileSource { - public OSciMap4TileSource() { - this("http://opensciencemap.org/tiles/vtm"); + private final static String DEFAULT_URL = "http://opensciencemap.org/tiles/vtm"; + private final static String DEFAULT_PATH = "/{Z}/{X}/{Y}.vtm"; + + public static class Builder> extends UrlTileSource.Builder { + + public Builder() { + super(DEFAULT_URL, DEFAULT_PATH, 0, 17); + } + + public OSciMap4TileSource build() { + return new OSciMap4TileSource(this); + } } - public OSciMap4TileSource(String url) { - super(url, "/{Z}/{X}/{Y}.vtm"); + @SuppressWarnings("rawtypes") + public static Builder builder() { + return new Builder(); + } + + protected OSciMap4TileSource(Builder builder) { + super(builder); + } + + public OSciMap4TileSource() { + this(builder()); + } + + public OSciMap4TileSource(String urlString) { + this(builder().url(urlString)); } @Override diff --git a/vtm/src/org/oscim/tiling/source/test/TestTileSource.java b/vtm/src/org/oscim/tiling/source/test/TestTileSource.java index 5a5675db..25697d4f 100644 --- a/vtm/src/org/oscim/tiling/source/test/TestTileSource.java +++ b/vtm/src/org/oscim/tiling/source/test/TestTileSource.java @@ -30,6 +30,10 @@ public class TestTileSource extends TileSource { // private boolean mOpenFile = false; + public TestTileSource() { + super(0, 18); + } + @Override public ITileDataSource getDataSource() { return new TileDataSource();