skip rendering TileSet when zoom-level is not renderable

This commit is contained in:
Hannes Janetzek 2014-03-21 01:50:21 +01:00
parent cb2aee6d60
commit 5ad631f1ea
2 changed files with 15 additions and 1 deletions

View File

@ -196,6 +196,15 @@ public class TileManager {
* jobs come in. */ * jobs come in. */
jobQueue.clear(); 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); int tileZoom = FastMath.clamp(pos.zoomLevel, mMinZoom, mMaxZoom);
if (mZoomTable != null) { if (mZoomTable != null) {
@ -349,7 +358,7 @@ public class TileManager {
mJobs.add(tile); mJobs.add(tile);
} }
if ((zoomLevel > 2) && (mZoomTable == null)) { if ((zoomLevel > mMinZoom) && (mZoomTable == null)) {
/* prefetch parent */ /* prefetch parent */
MapTile p = tile.node.parent.item; MapTile p = tile.node.parent.item;
if (p == null) { if (p == null) {

View File

@ -226,6 +226,10 @@ public abstract class TileRenderer extends LayerRenderer {
for (int i = 0; i < mDrawTiles.cnt; i++) for (int i = 0; i < mDrawTiles.cnt; i++)
tiles[i].isVisible = false; 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 */ /* count placeholder tiles */
mProxyTileCnt = 0; mProxyTileCnt = 0;
@ -287,6 +291,7 @@ public abstract class TileRenderer extends LayerRenderer {
private final ScanBox mScanBox = new ScanBox() { private final ScanBox mScanBox = new ScanBox() {
@Override @Override
protected void setVisible(int y, int x1, int x2) { protected void setVisible(int y, int x1, int x2) {
MapTile[] tiles = mDrawTiles.tiles; MapTile[] tiles = mDrawTiles.tiles;
int cnt = mDrawTiles.cnt; int cnt = mDrawTiles.cnt;