diff --git a/vtm/src/org/oscim/layers/tile/buildings/BuildingLayer.java b/vtm/src/org/oscim/layers/tile/buildings/BuildingLayer.java index 01eca4b7..878caf92 100644 --- a/vtm/src/org/oscim/layers/tile/buildings/BuildingLayer.java +++ b/vtm/src/org/oscim/layers/tile/buildings/BuildingLayer.java @@ -43,8 +43,8 @@ public class BuildingLayer extends Layer implements TileLoaderThemeHook { protected final static int BUILDING_LEVEL_HEIGHT = 280; // cm - protected final static int MIN_ZOOM = 17; - protected final static int MAX_ZOOM = 17; + public final static int MIN_ZOOM = 17; + public final static int MAX_ZOOM = 17; public static boolean POST_AA = false; public static boolean TRANSLUCENT = true; diff --git a/vtm/src/org/oscim/tiling/TileSource.java b/vtm/src/org/oscim/tiling/TileSource.java index 2471ed02..42cf9e55 100644 --- a/vtm/src/org/oscim/tiling/TileSource.java +++ b/vtm/src/org/oscim/tiling/TileSource.java @@ -19,6 +19,7 @@ package org.oscim.tiling; import org.oscim.layers.tile.bitmap.BitmapTileLayer.FadeStep; +import org.oscim.layers.tile.buildings.BuildingLayer; import org.oscim.map.Viewport; import java.util.HashMap; @@ -81,8 +82,8 @@ public abstract class TileSource { } } - // FIXME Same as BuildingLayer.MAX_ZOOM - public static final int MAX_ZOOM = 17; + // 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; diff --git a/vtm/src/org/oscim/tiling/source/mapfile/MapDatabase.java b/vtm/src/org/oscim/tiling/source/mapfile/MapDatabase.java index 78183893..cd0566ed 100644 --- a/vtm/src/org/oscim/tiling/source/mapfile/MapDatabase.java +++ b/vtm/src/org/oscim/tiling/source/mapfile/MapDatabase.java @@ -4,7 +4,7 @@ * Copyright 2014-2015 Ludwig M Brinckmann * Copyright 2016-2018 devemux86 * Copyright 2016 Andrey Novikov - * Copyright 2017 Gustl22 + * Copyright 2017-2018 Gustl22 * * This file is part of the OpenScienceMap project (http://www.opensciencemap.org). * @@ -30,6 +30,7 @@ import org.oscim.core.MercatorProjection; import org.oscim.core.Tag; import org.oscim.core.Tile; 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; @@ -954,10 +955,11 @@ public class MapDatabase implements ITileDataSource { e.setLabelPosition(e.points[0] + labelPosition[0], e.points[1] + labelPosition[1]); mTileProjection.project(e); - // At large query zoom levels clip everything + // Avoid clipping for buildings, which slows rendering. + // But clip everything if buildings are displayed. if ((!e.tags.containsKey(Tag.KEY_BUILDING) && !e.tags.containsKey(Tag.KEY_BUILDING_PART)) - || queryParameters.queryZoomLevel > TileSource.MAX_ZOOM) { + || queryParameters.queryZoomLevel >= BuildingLayer.MIN_ZOOM) { if (!mTileClipper.clip(e)) { continue; }