From 5ad631f1ea8400755e7847da88ea9604cae2896a Mon Sep 17 00:00:00 2001 From: Hannes Janetzek <hannes.janetzek@gmail.com> Date: Fri, 21 Mar 2014 01:50:21 +0100 Subject: [PATCH] skip rendering TileSet when zoom-level is not renderable --- vtm/src/org/oscim/layers/tile/TileManager.java | 11 ++++++++++- vtm/src/org/oscim/layers/tile/TileRenderer.java | 5 +++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/vtm/src/org/oscim/layers/tile/TileManager.java b/vtm/src/org/oscim/layers/tile/TileManager.java index c5e833b0..d6036fe3 100644 --- a/vtm/src/org/oscim/layers/tile/TileManager.java +++ b/vtm/src/org/oscim/layers/tile/TileManager.java @@ -196,6 +196,15 @@ public class TileManager { * jobs come in. */ jobQueue.clear(); + if (pos.zoomLevel < mMinZoom) { + if (mCurrentTiles.cnt > 0 && pos.zoomLevel < mMinZoom - 4) { + synchronized (mTilelock) { + mCurrentTiles.releaseTiles(); + } + } + return false; + } + int tileZoom = FastMath.clamp(pos.zoomLevel, mMinZoom, mMaxZoom); if (mZoomTable != null) { @@ -349,7 +358,7 @@ public class TileManager { mJobs.add(tile); } - if ((zoomLevel > 2) && (mZoomTable == null)) { + if ((zoomLevel > mMinZoom) && (mZoomTable == null)) { /* prefetch parent */ MapTile p = tile.node.parent.item; if (p == null) { diff --git a/vtm/src/org/oscim/layers/tile/TileRenderer.java b/vtm/src/org/oscim/layers/tile/TileRenderer.java index defb2634..8ac03a5f 100644 --- a/vtm/src/org/oscim/layers/tile/TileRenderer.java +++ b/vtm/src/org/oscim/layers/tile/TileRenderer.java @@ -226,6 +226,10 @@ public abstract class TileRenderer extends LayerRenderer { for (int i = 0; i < mDrawTiles.cnt; i++) tiles[i].isVisible = false; + if (tileZoom > pos.zoomLevel + 2 || tileZoom < pos.zoomLevel - 4) { + //log.debug("skip: zoomlevel diff " + (tileZoom - pos.zoomLevel)); + return; + } /* count placeholder tiles */ mProxyTileCnt = 0; @@ -287,6 +291,7 @@ public abstract class TileRenderer extends LayerRenderer { private final ScanBox mScanBox = new ScanBox() { @Override protected void setVisible(int y, int x1, int x2) { + MapTile[] tiles = mDrawTiles.tiles; int cnt = mDrawTiles.cnt;