Tile sources: enable full overzoom #393

This commit is contained in:
Emux 2018-05-11 10:50:04 +03:00
parent 77ea71c519
commit c79dbb26ea
No known key found for this signature in database
GPG Key ID: 64ED9980896038C3
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.Tag;
import org.oscim.map.Viewport;
import org.oscim.tiling.TileSource;
import org.oscim.tiling.source.UrlTileSource;
import org.oscim.utils.FastMath;
@ -34,7 +32,7 @@ public class MapzenGeojsonTileSource extends GeojsonTileSource {
private String locale = "";
public Builder() {
super(DEFAULT_URL, DEFAULT_PATH, Viewport.MIN_ZOOM_LEVEL, TileSource.MAX_ZOOM);
super(DEFAULT_URL, DEFAULT_PATH);
keyName("api_key");
overZoom(16);
}

View File

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

View File

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

View File

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

View File

@ -18,10 +18,8 @@
*/
package org.oscim.tiling.source.mvt;
import org.oscim.map.Viewport;
import org.oscim.tiling.ITileDataSource;
import org.oscim.tiling.OverzoomTileDataSource;
import org.oscim.tiling.TileSource;
import org.oscim.tiling.source.UrlTileDataSource;
import org.oscim.tiling.source.UrlTileSource;
@ -34,7 +32,7 @@ public class OpenMapTilesMvtTileSource extends UrlTileSource {
private String locale = "";
public Builder() {
super(DEFAULT_URL, DEFAULT_PATH, Viewport.MIN_ZOOM_LEVEL, TileSource.MAX_ZOOM);
super(DEFAULT_URL, DEFAULT_PATH);
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.MapTile;
import org.oscim.layers.tile.TileLoader;
import org.oscim.map.Viewport;
import org.oscim.tiling.ITileDataSink;
import org.oscim.tiling.ITileDataSource;
import org.oscim.tiling.QueryResult;
import org.oscim.tiling.TileSource;
import org.oscim.tiling.source.LwHttp;
import org.oscim.tiling.source.UrlTileSource;
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 Builder() {
super(null, "/{Z}/{X}/{Y}.png", Viewport.MIN_ZOOM_LEVEL, TileSource.MAX_ZOOM);
super(null, "/{Z}/{X}/{Y}.png");
}
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
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 TRANSLUCENT = true;
@ -68,11 +67,11 @@ public class BuildingLayer extends Layer implements TileLoaderThemeHook, ZoomLim
}
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) {
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) {

View File

@ -47,7 +47,7 @@ public class S3DBLayer extends BuildingLayer {
private boolean mColored = true;
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) {

View File

@ -21,7 +21,6 @@ import org.oscim.core.Tag;
import org.oscim.core.TagSet;
import org.oscim.layers.tile.TileLoader;
import org.oscim.map.Map;
import org.oscim.tiling.TileSource;
import org.oscim.utils.Utils;
public class OsmTileLayer extends VectorTileLayer {
@ -29,7 +28,7 @@ public class OsmTileLayer extends VectorTileLayer {
private static final int CACHE_LIMIT = 150;
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) {

View File

@ -29,8 +29,8 @@ public abstract class TileSource {
public abstract static class Builder<T extends Builder<T>> {
protected float alpha = 1;
protected int zoomMin = Viewport.MIN_ZOOM_LEVEL;
protected int zoomMax = TileSource.MAX_ZOOM;
protected int overZoom = TileSource.MAX_ZOOM;
protected int zoomMax = Viewport.MAX_ZOOM_LEVEL;
protected int overZoom = BuildingLayer.MIN_ZOOM;
protected FadeStep[] fadeSteps;
protected String name;
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 int mZoomMin = Viewport.MIN_ZOOM_LEVEL;
protected int mZoomMax = TileSource.MAX_ZOOM;
protected int mOverZoom = TileSource.MAX_ZOOM;
protected int mZoomMax = Viewport.MAX_ZOOM_LEVEL;
protected int mOverZoom = BuildingLayer.MIN_ZOOM;
protected FadeStep[] mFadeSteps;
protected String mName;
protected int mTileSize = 256;

View File

@ -102,7 +102,7 @@ public abstract class UrlTileSource extends TileSource {
}
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) {

View File

@ -20,10 +20,8 @@ package org.oscim.tiling.source.bitmap;
import org.oscim.backend.CanvasAdapter;
import org.oscim.backend.canvas.Bitmap;
import org.oscim.core.Tile;
import org.oscim.map.Viewport;
import org.oscim.tiling.ITileDataSink;
import org.oscim.tiling.ITileDataSource;
import org.oscim.tiling.TileSource;
import org.oscim.tiling.source.ITileDecoder;
import org.oscim.tiling.source.LwHttp;
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 Builder() {
super(null, "/{Z}/{X}/{Y}.png", Viewport.MIN_ZOOM_LEVEL, TileSource.MAX_ZOOM);
super(null, "/{Z}/{X}/{Y}.png");
}
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.tiling.ITileDataSink;
import org.oscim.tiling.ITileDataSource;
import org.oscim.tiling.TileSource;
import org.oscim.tiling.source.mapfile.header.SubFileParameter;
import org.oscim.utils.Parameters;
import org.oscim.utils.geom.TileClipper;
@ -416,7 +415,7 @@ public class MapDatabase implements ITileDataSource {
// At large query zoom levels use enlarged buffer
int buffer;
if (queryParameters.queryZoomLevel > TileSource.MAX_ZOOM)
if (queryParameters.queryZoomLevel > BuildingLayer.MIN_ZOOM)
buffer = Tile.SIZE / 2;
else
buffer = (int) (16 * CanvasAdapter.getScale() + 0.5f);

View File

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

View File

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

View File

@ -17,10 +17,8 @@
*/
package org.oscim.tiling.source.oscimap4;
import org.oscim.map.Viewport;
import org.oscim.tiling.ITileDataSource;
import org.oscim.tiling.OverzoomTileDataSource;
import org.oscim.tiling.TileSource;
import org.oscim.tiling.source.UrlTileDataSource;
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 Builder() {
super(DEFAULT_URL, DEFAULT_PATH, Viewport.MIN_ZOOM_LEVEL, TileSource.MAX_ZOOM);
super(DEFAULT_URL, DEFAULT_PATH);
overZoom(17);
}