Tile sources: enable full overzoom #393

This commit is contained in:
Emux
2018-05-11 10:50:04 +03:00
parent 77ea71c519
commit c79dbb26ea
16 changed files with 24 additions and 44 deletions

View File

@@ -17,8 +17,6 @@ package org.oscim.tiling.source.geojson;
import org.oscim.core.MapElement; import org.oscim.core.MapElement;
import org.oscim.core.Tag; import org.oscim.core.Tag;
import org.oscim.map.Viewport;
import org.oscim.tiling.TileSource;
import org.oscim.tiling.source.UrlTileSource; import org.oscim.tiling.source.UrlTileSource;
import org.oscim.utils.FastMath; import org.oscim.utils.FastMath;
@@ -34,7 +32,7 @@ public class MapzenGeojsonTileSource extends GeojsonTileSource {
private String locale = ""; private String locale = "";
public Builder() { public Builder() {
super(DEFAULT_URL, DEFAULT_PATH, Viewport.MIN_ZOOM_LEVEL, TileSource.MAX_ZOOM); super(DEFAULT_URL, DEFAULT_PATH);
keyName("api_key"); keyName("api_key");
overZoom(16); overZoom(16);
} }

View File

@@ -16,8 +16,6 @@ package org.oscim.tiling.source.geojson;
import org.oscim.core.MapElement; import org.oscim.core.MapElement;
import org.oscim.core.Tag; import org.oscim.core.Tag;
import org.oscim.map.Viewport;
import org.oscim.tiling.TileSource;
import org.oscim.tiling.source.UrlTileSource; import org.oscim.tiling.source.UrlTileSource;
import org.oscim.utils.FastMath; import org.oscim.utils.FastMath;
@@ -33,7 +31,7 @@ public class NextzenGeojsonTileSource extends GeojsonTileSource {
private String locale = ""; private String locale = "";
public Builder() { public Builder() {
super(DEFAULT_URL, DEFAULT_PATH, Viewport.MIN_ZOOM_LEVEL, TileSource.MAX_ZOOM); super(DEFAULT_URL, DEFAULT_PATH);
keyName("api_key"); keyName("api_key");
overZoom(16); overZoom(16);
} }

View File

@@ -17,10 +17,8 @@
*/ */
package org.oscim.tiling.source.mvt; package org.oscim.tiling.source.mvt;
import org.oscim.map.Viewport;
import org.oscim.tiling.ITileDataSource; import org.oscim.tiling.ITileDataSource;
import org.oscim.tiling.OverzoomTileDataSource; import org.oscim.tiling.OverzoomTileDataSource;
import org.oscim.tiling.TileSource;
import org.oscim.tiling.source.UrlTileDataSource; import org.oscim.tiling.source.UrlTileDataSource;
import org.oscim.tiling.source.UrlTileSource; import org.oscim.tiling.source.UrlTileSource;
@@ -33,7 +31,7 @@ public class MapzenMvtTileSource extends UrlTileSource {
private String locale = ""; private String locale = "";
public Builder() { public Builder() {
super(DEFAULT_URL, DEFAULT_PATH, Viewport.MIN_ZOOM_LEVEL, TileSource.MAX_ZOOM); super(DEFAULT_URL, DEFAULT_PATH);
keyName("api_key"); keyName("api_key");
overZoom(16); overZoom(16);
} }

View File

@@ -14,10 +14,8 @@
*/ */
package org.oscim.tiling.source.mvt; package org.oscim.tiling.source.mvt;
import org.oscim.map.Viewport;
import org.oscim.tiling.ITileDataSource; import org.oscim.tiling.ITileDataSource;
import org.oscim.tiling.OverzoomTileDataSource; import org.oscim.tiling.OverzoomTileDataSource;
import org.oscim.tiling.TileSource;
import org.oscim.tiling.source.UrlTileDataSource; import org.oscim.tiling.source.UrlTileDataSource;
import org.oscim.tiling.source.UrlTileSource; import org.oscim.tiling.source.UrlTileSource;
@@ -30,7 +28,7 @@ public class NextzenMvtTileSource extends UrlTileSource {
private String locale = ""; private String locale = "";
public Builder() { public Builder() {
super(DEFAULT_URL, DEFAULT_PATH, Viewport.MIN_ZOOM_LEVEL, TileSource.MAX_ZOOM); super(DEFAULT_URL, DEFAULT_PATH);
keyName("api_key"); keyName("api_key");
overZoom(16); overZoom(16);
} }

View File

@@ -18,10 +18,8 @@
*/ */
package org.oscim.tiling.source.mvt; package org.oscim.tiling.source.mvt;
import org.oscim.map.Viewport;
import org.oscim.tiling.ITileDataSource; import org.oscim.tiling.ITileDataSource;
import org.oscim.tiling.OverzoomTileDataSource; import org.oscim.tiling.OverzoomTileDataSource;
import org.oscim.tiling.TileSource;
import org.oscim.tiling.source.UrlTileDataSource; import org.oscim.tiling.source.UrlTileDataSource;
import org.oscim.tiling.source.UrlTileSource; import org.oscim.tiling.source.UrlTileSource;
@@ -34,7 +32,7 @@ public class OpenMapTilesMvtTileSource extends UrlTileSource {
private String locale = ""; private String locale = "";
public Builder() { public Builder() {
super(DEFAULT_URL, DEFAULT_PATH, Viewport.MIN_ZOOM_LEVEL, TileSource.MAX_ZOOM); super(DEFAULT_URL, DEFAULT_PATH);
overZoom(14); overZoom(14);
} }

View File

@@ -30,11 +30,9 @@ import org.oscim.gdx.client.GwtBitmap;
import org.oscim.layers.tile.LoadDelayTask; import org.oscim.layers.tile.LoadDelayTask;
import org.oscim.layers.tile.MapTile; import org.oscim.layers.tile.MapTile;
import org.oscim.layers.tile.TileLoader; import org.oscim.layers.tile.TileLoader;
import org.oscim.map.Viewport;
import org.oscim.tiling.ITileDataSink; import org.oscim.tiling.ITileDataSink;
import org.oscim.tiling.ITileDataSource; import org.oscim.tiling.ITileDataSource;
import org.oscim.tiling.QueryResult; import org.oscim.tiling.QueryResult;
import org.oscim.tiling.TileSource;
import org.oscim.tiling.source.LwHttp; import org.oscim.tiling.source.LwHttp;
import org.oscim.tiling.source.UrlTileSource; import org.oscim.tiling.source.UrlTileSource;
import org.slf4j.Logger; import org.slf4j.Logger;
@@ -46,7 +44,7 @@ public class BitmapTileSource extends UrlTileSource {
public static class Builder<T extends Builder<T>> extends UrlTileSource.Builder<T> { public static class Builder<T extends Builder<T>> extends UrlTileSource.Builder<T> {
public Builder() { public Builder() {
super(null, "/{Z}/{X}/{Y}.png", Viewport.MIN_ZOOM_LEVEL, TileSource.MAX_ZOOM); super(null, "/{Z}/{X}/{Y}.png");
} }
public BitmapTileSource build() { public BitmapTileSource build() {

View File

@@ -45,7 +45,6 @@ public class BuildingLayer extends Layer implements TileLoaderThemeHook, ZoomLim
protected final static int BUILDING_LEVEL_HEIGHT = 280; // cm protected final static int BUILDING_LEVEL_HEIGHT = 280; // cm
public final static int MIN_ZOOM = 17; public final static int MIN_ZOOM = 17;
public final static int MAX_ZOOM = 17; // TODO use Viewport.MAX_ZOOM_LEVEL;
public static boolean POST_AA = false; public static boolean POST_AA = false;
public static boolean TRANSLUCENT = true; public static boolean TRANSLUCENT = true;
@@ -68,11 +67,11 @@ public class BuildingLayer extends Layer implements TileLoaderThemeHook, ZoomLim
} }
public BuildingLayer(Map map, VectorTileLayer tileLayer) { public BuildingLayer(Map map, VectorTileLayer tileLayer) {
this(map, tileLayer, MIN_ZOOM, MAX_ZOOM, false); this(map, tileLayer, false);
} }
public BuildingLayer(Map map, VectorTileLayer tileLayer, boolean mesh) { public BuildingLayer(Map map, VectorTileLayer tileLayer, boolean mesh) {
this(map, tileLayer, MIN_ZOOM, MAX_ZOOM, mesh); this(map, tileLayer, MIN_ZOOM, map.viewport().getMaxZoomLevel(), mesh);
} }
public BuildingLayer(Map map, VectorTileLayer tileLayer, int zoomMin, int zoomMax, boolean mesh) { public BuildingLayer(Map map, VectorTileLayer tileLayer, int zoomMin, int zoomMax, boolean mesh) {

View File

@@ -47,7 +47,7 @@ public class S3DBLayer extends BuildingLayer {
private boolean mColored = true; private boolean mColored = true;
public S3DBLayer(Map map, VectorTileLayer tileLayer) { public S3DBLayer(Map map, VectorTileLayer tileLayer) {
this(map, tileLayer, MIN_ZOOM, MAX_ZOOM); this(map, tileLayer, MIN_ZOOM, map.viewport().getMaxZoomLevel());
} }
public S3DBLayer(Map map, VectorTileLayer tileLayer, int zoomMin, int zoomMax) { public S3DBLayer(Map map, VectorTileLayer tileLayer, int zoomMin, int zoomMax) {

View File

@@ -21,7 +21,6 @@ import org.oscim.core.Tag;
import org.oscim.core.TagSet; import org.oscim.core.TagSet;
import org.oscim.layers.tile.TileLoader; import org.oscim.layers.tile.TileLoader;
import org.oscim.map.Map; import org.oscim.map.Map;
import org.oscim.tiling.TileSource;
import org.oscim.utils.Utils; import org.oscim.utils.Utils;
public class OsmTileLayer extends VectorTileLayer { public class OsmTileLayer extends VectorTileLayer {
@@ -29,7 +28,7 @@ public class OsmTileLayer extends VectorTileLayer {
private static final int CACHE_LIMIT = 150; private static final int CACHE_LIMIT = 150;
public OsmTileLayer(Map map) { public OsmTileLayer(Map map) {
this(map, map.viewport().getMinZoomLevel(), TileSource.MAX_ZOOM); this(map, map.viewport().getMinZoomLevel(), map.viewport().getMaxZoomLevel());
} }
public OsmTileLayer(Map map, int zoomMin, int zoomMax) { public OsmTileLayer(Map map, int zoomMin, int zoomMax) {

View File

@@ -29,8 +29,8 @@ public abstract class TileSource {
public abstract static class Builder<T extends Builder<T>> { public abstract static class Builder<T extends Builder<T>> {
protected float alpha = 1; protected float alpha = 1;
protected int zoomMin = Viewport.MIN_ZOOM_LEVEL; protected int zoomMin = Viewport.MIN_ZOOM_LEVEL;
protected int zoomMax = TileSource.MAX_ZOOM; protected int zoomMax = Viewport.MAX_ZOOM_LEVEL;
protected int overZoom = TileSource.MAX_ZOOM; protected int overZoom = BuildingLayer.MIN_ZOOM;
protected FadeStep[] fadeSteps; protected FadeStep[] fadeSteps;
protected String name; protected String name;
protected int tileSize = 256; protected int tileSize = 256;
@@ -82,13 +82,10 @@ public abstract class TileSource {
} }
} }
// FIXME Sane default since buildings don't have overzoom
public static final int MAX_ZOOM = BuildingLayer.MAX_ZOOM;
protected float mAlpha = 1; protected float mAlpha = 1;
protected int mZoomMin = Viewport.MIN_ZOOM_LEVEL; protected int mZoomMin = Viewport.MIN_ZOOM_LEVEL;
protected int mZoomMax = TileSource.MAX_ZOOM; protected int mZoomMax = Viewport.MAX_ZOOM_LEVEL;
protected int mOverZoom = TileSource.MAX_ZOOM; protected int mOverZoom = BuildingLayer.MIN_ZOOM;
protected FadeStep[] mFadeSteps; protected FadeStep[] mFadeSteps;
protected String mName; protected String mName;
protected int mTileSize = 256; protected int mTileSize = 256;

View File

@@ -102,7 +102,7 @@ public abstract class UrlTileSource extends TileSource {
} }
protected UrlTileSource(String urlString, String tilePath) { protected UrlTileSource(String urlString, String tilePath) {
this(urlString, tilePath, Viewport.MIN_ZOOM_LEVEL, TileSource.MAX_ZOOM); this(urlString, tilePath, Viewport.MIN_ZOOM_LEVEL, Viewport.MAX_ZOOM_LEVEL);
} }
protected UrlTileSource(String urlString, String tilePath, int zoomMin, int zoomMax) { protected UrlTileSource(String urlString, String tilePath, int zoomMin, int zoomMax) {

View File

@@ -20,10 +20,8 @@ package org.oscim.tiling.source.bitmap;
import org.oscim.backend.CanvasAdapter; import org.oscim.backend.CanvasAdapter;
import org.oscim.backend.canvas.Bitmap; import org.oscim.backend.canvas.Bitmap;
import org.oscim.core.Tile; import org.oscim.core.Tile;
import org.oscim.map.Viewport;
import org.oscim.tiling.ITileDataSink; import org.oscim.tiling.ITileDataSink;
import org.oscim.tiling.ITileDataSource; import org.oscim.tiling.ITileDataSource;
import org.oscim.tiling.TileSource;
import org.oscim.tiling.source.ITileDecoder; import org.oscim.tiling.source.ITileDecoder;
import org.oscim.tiling.source.LwHttp; import org.oscim.tiling.source.LwHttp;
import org.oscim.tiling.source.UrlTileDataSource; import org.oscim.tiling.source.UrlTileDataSource;
@@ -40,7 +38,7 @@ public class BitmapTileSource extends UrlTileSource {
public static class Builder<T extends Builder<T>> extends UrlTileSource.Builder<T> { public static class Builder<T extends Builder<T>> extends UrlTileSource.Builder<T> {
public Builder() { public Builder() {
super(null, "/{Z}/{X}/{Y}.png", Viewport.MIN_ZOOM_LEVEL, TileSource.MAX_ZOOM); super(null, "/{Z}/{X}/{Y}.png");
} }
public BitmapTileSource build() { public BitmapTileSource build() {

View File

@@ -34,7 +34,6 @@ import org.oscim.layers.tile.MapTile;
import org.oscim.layers.tile.buildings.BuildingLayer; import org.oscim.layers.tile.buildings.BuildingLayer;
import org.oscim.tiling.ITileDataSink; import org.oscim.tiling.ITileDataSink;
import org.oscim.tiling.ITileDataSource; import org.oscim.tiling.ITileDataSource;
import org.oscim.tiling.TileSource;
import org.oscim.tiling.source.mapfile.header.SubFileParameter; import org.oscim.tiling.source.mapfile.header.SubFileParameter;
import org.oscim.utils.Parameters; import org.oscim.utils.Parameters;
import org.oscim.utils.geom.TileClipper; import org.oscim.utils.geom.TileClipper;
@@ -416,7 +415,7 @@ public class MapDatabase implements ITileDataSource {
// At large query zoom levels use enlarged buffer // At large query zoom levels use enlarged buffer
int buffer; int buffer;
if (queryParameters.queryZoomLevel > TileSource.MAX_ZOOM) if (queryParameters.queryZoomLevel > BuildingLayer.MIN_ZOOM)
buffer = Tile.SIZE / 2; buffer = Tile.SIZE / 2;
else else
buffer = (int) (16 * CanvasAdapter.getScale() + 0.5f); buffer = (int) (16 * CanvasAdapter.getScale() + 0.5f);

View File

@@ -18,6 +18,7 @@
*/ */
package org.oscim.tiling.source.mapfile; package org.oscim.tiling.source.mapfile;
import org.oscim.layers.tile.buildings.BuildingLayer;
import org.oscim.map.Viewport; import org.oscim.map.Viewport;
import org.oscim.tiling.ITileDataSource; import org.oscim.tiling.ITileDataSource;
import org.oscim.tiling.OverzoomTileDataSource; import org.oscim.tiling.OverzoomTileDataSource;
@@ -55,11 +56,11 @@ public class MapFileTileSource extends TileSource implements IMapFileTileSource
private Callback callback; private Callback callback;
public MapFileTileSource() { public MapFileTileSource() {
this(Viewport.MIN_ZOOM_LEVEL, TileSource.MAX_ZOOM); this(Viewport.MIN_ZOOM_LEVEL, Viewport.MAX_ZOOM_LEVEL);
} }
public MapFileTileSource(int zoomMin, int zoomMax) { public MapFileTileSource(int zoomMin, int zoomMax) {
this(zoomMin, zoomMax, zoomMax); this(zoomMin, zoomMax, BuildingLayer.MIN_ZOOM);
} }
public MapFileTileSource(int zoomMin, int zoomMax, int overZoom) { public MapFileTileSource(int zoomMin, int zoomMax, int overZoom) {

View File

@@ -15,6 +15,7 @@
package org.oscim.tiling.source.mapfile; package org.oscim.tiling.source.mapfile;
import org.oscim.core.BoundingBox; import org.oscim.core.BoundingBox;
import org.oscim.layers.tile.buildings.BuildingLayer;
import org.oscim.map.Viewport; import org.oscim.map.Viewport;
import org.oscim.tiling.ITileDataSource; import org.oscim.tiling.ITileDataSource;
import org.oscim.tiling.OverzoomTileDataSource; import org.oscim.tiling.OverzoomTileDataSource;
@@ -36,11 +37,11 @@ public class MultiMapFileTileSource extends TileSource implements IMapFileTileSo
private final Map<MapFileTileSource, int[]> zoomsByTileSource = new HashMap<>(); private final Map<MapFileTileSource, int[]> zoomsByTileSource = new HashMap<>();
public MultiMapFileTileSource() { public MultiMapFileTileSource() {
this(Viewport.MIN_ZOOM_LEVEL, TileSource.MAX_ZOOM); this(Viewport.MIN_ZOOM_LEVEL, Viewport.MAX_ZOOM_LEVEL);
} }
public MultiMapFileTileSource(int zoomMin, int zoomMax) { public MultiMapFileTileSource(int zoomMin, int zoomMax) {
this(zoomMin, zoomMax, zoomMax); this(zoomMin, zoomMax, BuildingLayer.MIN_ZOOM);
} }
public MultiMapFileTileSource(int zoomMin, int zoomMax, int overZoom) { public MultiMapFileTileSource(int zoomMin, int zoomMax, int overZoom) {

View File

@@ -17,10 +17,8 @@
*/ */
package org.oscim.tiling.source.oscimap4; package org.oscim.tiling.source.oscimap4;
import org.oscim.map.Viewport;
import org.oscim.tiling.ITileDataSource; import org.oscim.tiling.ITileDataSource;
import org.oscim.tiling.OverzoomTileDataSource; import org.oscim.tiling.OverzoomTileDataSource;
import org.oscim.tiling.TileSource;
import org.oscim.tiling.source.UrlTileDataSource; import org.oscim.tiling.source.UrlTileDataSource;
import org.oscim.tiling.source.UrlTileSource; import org.oscim.tiling.source.UrlTileSource;
@@ -32,7 +30,7 @@ public class OSciMap4TileSource extends UrlTileSource {
public static class Builder<T extends Builder<T>> extends UrlTileSource.Builder<T> { public static class Builder<T extends Builder<T>> extends UrlTileSource.Builder<T> {
public Builder() { public Builder() {
super(DEFAULT_URL, DEFAULT_PATH, Viewport.MIN_ZOOM_LEVEL, TileSource.MAX_ZOOM); super(DEFAULT_URL, DEFAULT_PATH);
overZoom(17); overZoom(17);
} }