MapDatabase: improve buildings processing (#514)

This commit is contained in:
Gustl22 2018-03-20 00:21:06 +01:00 committed by Emux
parent 6af2d305b3
commit 6fef1854c8
No known key found for this signature in database
GPG Key ID: 89C6921D7AF2BDD0
3 changed files with 10 additions and 7 deletions

View File

@ -43,8 +43,8 @@ public class BuildingLayer extends Layer implements TileLoaderThemeHook {
protected final static int BUILDING_LEVEL_HEIGHT = 280; // cm protected final static int BUILDING_LEVEL_HEIGHT = 280; // cm
protected final static int MIN_ZOOM = 17; public final static int MIN_ZOOM = 17;
protected final static int MAX_ZOOM = 17; public final static int MAX_ZOOM = 17;
public static boolean POST_AA = false; public static boolean POST_AA = false;
public static boolean TRANSLUCENT = true; public static boolean TRANSLUCENT = true;

View File

@ -19,6 +19,7 @@
package org.oscim.tiling; package org.oscim.tiling;
import org.oscim.layers.tile.bitmap.BitmapTileLayer.FadeStep; import org.oscim.layers.tile.bitmap.BitmapTileLayer.FadeStep;
import org.oscim.layers.tile.buildings.BuildingLayer;
import org.oscim.map.Viewport; import org.oscim.map.Viewport;
import java.util.HashMap; import java.util.HashMap;
@ -81,8 +82,8 @@ public abstract class TileSource {
} }
} }
// FIXME Same as BuildingLayer.MAX_ZOOM // FIXME Sane default since buildings don't have overzoom
public static final int MAX_ZOOM = 17; 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;

View File

@ -4,7 +4,7 @@
* Copyright 2014-2015 Ludwig M Brinckmann * Copyright 2014-2015 Ludwig M Brinckmann
* Copyright 2016-2018 devemux86 * Copyright 2016-2018 devemux86
* Copyright 2016 Andrey Novikov * Copyright 2016 Andrey Novikov
* Copyright 2017 Gustl22 * Copyright 2017-2018 Gustl22
* *
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org). * 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.Tag;
import org.oscim.core.Tile; import org.oscim.core.Tile;
import org.oscim.layers.tile.MapTile; import org.oscim.layers.tile.MapTile;
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.TileSource;
@ -954,10 +955,11 @@ public class MapDatabase implements ITileDataSource {
e.setLabelPosition(e.points[0] + labelPosition[0], e.points[1] + labelPosition[1]); e.setLabelPosition(e.points[0] + labelPosition[0], e.points[1] + labelPosition[1]);
mTileProjection.project(e); 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) if ((!e.tags.containsKey(Tag.KEY_BUILDING)
&& !e.tags.containsKey(Tag.KEY_BUILDING_PART)) && !e.tags.containsKey(Tag.KEY_BUILDING_PART))
|| queryParameters.queryZoomLevel > TileSource.MAX_ZOOM) { || queryParameters.queryZoomLevel >= BuildingLayer.MIN_ZOOM) {
if (!mTileClipper.clip(e)) { if (!mTileClipper.clip(e)) {
continue; continue;
} }