add TileSource.Builders

This commit is contained in:
Hannes Janetzek
2014-09-11 20:11:29 +02:00
parent 67336e0c93
commit a97b3283a0
18 changed files with 276 additions and 131 deletions

View File

@@ -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) {

View File

@@ -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<MarkerItem> {
implements OnItemGestureListener<MarkerItem> {
private MarkerSymbol mFocusMarker;
public MarkerOverlayActivity() {
super(new DefaultSources.StamenToner());
super(STAMEN_TONER.build());
}
@Override
@@ -54,7 +55,7 @@ implements OnItemGestureListener<MarkerItem> {
ItemizedLayer<MarkerItem> markerLayer =
new ItemizedLayer<MarkerItem>(mMap, new ArrayList<MarkerItem>(),
symbol, this);
symbol, this);
mMap.layers().add(markerLayer);

View File

@@ -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);

View File

@@ -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<GeoPoint> pts = new ArrayList<GeoPoint>();
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;

View File

@@ -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");

View File

@@ -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);
}

View File

@@ -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);

View File

@@ -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);
}

View File

@@ -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() {

View File

@@ -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) {

View File

@@ -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<T extends Builder<T>> extends UrlTileSource.Builder<T> {
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'
*

View File

@@ -22,9 +22,44 @@ import org.oscim.layers.tile.bitmap.BitmapTileLayer.FadeStep;
public abstract class TileSource {
public abstract static class Builder<T extends Builder<T>> {
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) {

View File

@@ -27,6 +27,40 @@ import org.oscim.tiling.source.LwHttp.LwHttpFactory;
public abstract class UrlTileSource extends TileSource {
public abstract static class Builder<T extends Builder<T>> extends TileSource.Builder<T> {
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.");

View File

@@ -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<T extends Builder<T>> extends UrlTileSource.Builder<T> {
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

View File

@@ -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);
}

View File

@@ -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);

View File

@@ -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<T extends Builder<T>> extends UrlTileSource.Builder<T> {
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

View File

@@ -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();