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. */
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) {

View File

@ -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;