From c280bbaf50dee10d33558afedb3ac69bb5b190b6 Mon Sep 17 00:00:00 2001 From: Hannes Janetzek Date: Wed, 3 Apr 2013 01:05:51 +0200 Subject: [PATCH] workaround issue with clipped tiles when scale is greater 2 on zoom-level 17 --- src/org/oscim/renderer/GLRenderer.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/org/oscim/renderer/GLRenderer.java b/src/org/oscim/renderer/GLRenderer.java index 1c5abce1..a22a7aad 100644 --- a/src/org/oscim/renderer/GLRenderer.java +++ b/src/org/oscim/renderer/GLRenderer.java @@ -321,10 +321,17 @@ public class GLRenderer implements GLSurfaceView.Renderer { // zoom-level changed. float div = FastMath.pow(pos.zoomLevel - tiles[0].zoomLevel); + // draw additional tiles on max zoom-level: + // to make sure buildings that are half visible but + // the not ground tile are still drawn. + float scale = pos.scale; + if (scale > 2) + scale = 2; + // transform screen coordinates to tile coordinates - float tileScale = pos.scale * div * Tile.TILE_SIZE; - double px = pos.x * pos.scale; - double py = pos.y * pos.scale; + float tileScale = scale * div * Tile.TILE_SIZE; + double px = pos.x * scale; + double py = pos.y * scale; for (int i = 0; i < 8; i += 2) { coords[i + 0] = (float) (px + coords[i + 0]) / tileScale; coords[i + 1] = (float) (py + coords[i + 1]) / tileScale;