diff --git a/vtm/src/org/oscim/layers/MapEventLayer.java b/vtm/src/org/oscim/layers/MapEventLayer.java index 058f8873..bfea793a 100644 --- a/vtm/src/org/oscim/layers/MapEventLayer.java +++ b/vtm/src/org/oscim/layers/MapEventLayer.java @@ -283,7 +283,7 @@ public class MapEventLayer extends Layer implements Map.InputListener, GestureLi mPrevPinchWidth = pinchWidth; } } - } else if (mDoScale) { + } else if (mDoScale && mEnableRotate) { // reenable rotation when higher threshold is reached double rad = Math.atan2(dy, dx); double r = rad - mAngle; @@ -321,12 +321,13 @@ public class MapEventLayer extends Layer implements Map.InputListener, GestureLi synchronized (mViewport) { if (!mDoTilt) { - mViewport.moveMap(mx, my); if (rotateBy != 0) mViewport.rotateMap(rotateBy, fx, fy); if (scaleBy != 1) mViewport.scaleMap(scaleBy, fx, fy); + + mViewport.moveMap(mx, my); } else { if (tiltBy != 0) { mViewport.moveMap(0, my / 2); @@ -334,12 +335,14 @@ public class MapEventLayer extends Layer implements Map.InputListener, GestureLi } } } - mMap.updateMap(true); mPrevX1 = x1; mPrevY1 = y1; mPrevX2 = x2; mPrevY2 = y2; + + mMap.updateMap(true); + return true; } diff --git a/vtm/src/org/oscim/layers/PathLayer.java b/vtm/src/org/oscim/layers/PathLayer.java index 39e4c2d7..968c70c7 100644 --- a/vtm/src/org/oscim/layers/PathLayer.java +++ b/vtm/src/org/oscim/layers/PathLayer.java @@ -28,7 +28,6 @@ import org.oscim.core.MapPosition; import org.oscim.core.MercatorProjection; import org.oscim.core.Tile; import org.oscim.map.Map; -import org.oscim.renderer.BufferObject; import org.oscim.renderer.ElementRenderer; import org.oscim.renderer.MapRenderer.Matrices; import org.oscim.renderer.elements.ElementLayers; @@ -390,7 +389,6 @@ public class PathLayer extends Layer { @Override public void cleanup(Task task) { - task.layer.vbo = BufferObject.release(task.layer.vbo); task.layer.clear(); } diff --git a/vtm/src/org/oscim/map/Map.java b/vtm/src/org/oscim/map/Map.java index 7569d7c0..6ae50d1e 100644 --- a/vtm/src/org/oscim/map/Map.java +++ b/vtm/src/org/oscim/map/Map.java @@ -96,8 +96,9 @@ public abstract class Map { } public VectorTileLayer setBaseMap(TileSource tileSource) { - mBaseLayer = new VectorTileLayer(this); + // TODO cleanup previous baseLayer here? + mBaseLayer = new VectorTileLayer(this); mBaseLayer.setTileSource(tileSource); mLayers.add(1, mBaseLayer); @@ -145,7 +146,7 @@ public abstract class Map { * be called from any thread. Request will be handled on main * thread. * - * @param redraw pass true to render next frame + * @param redraw pass true to render next frame afterwards */ public abstract void updateMap(boolean redraw); diff --git a/vtm/src/org/oscim/map/MapAnimator.java b/vtm/src/org/oscim/map/MapAnimator.java index 62a7846c..ad45bd93 100644 --- a/vtm/src/org/oscim/map/MapAnimator.java +++ b/vtm/src/org/oscim/map/MapAnimator.java @@ -247,7 +247,8 @@ public class MapAnimator { double dy = mVelocity.y * adv; if ((dx - mScroll.x) != 0 || (dy - mScroll.y) != 0) { - mViewport.moveMap((float) (dx - mScroll.x), (float) (dy - mScroll.y)); + mViewport.moveMap((float) (dx - mScroll.x), + (float) (dy - mScroll.y)); mScroll.x = dx; mScroll.y = dy; diff --git a/vtm/src/org/oscim/map/Viewport.java b/vtm/src/org/oscim/map/Viewport.java index e04f52db..01b22c91 100644 --- a/vtm/src/org/oscim/map/Viewport.java +++ b/vtm/src/org/oscim/map/Viewport.java @@ -477,8 +477,8 @@ public class Viewport { double rsin = Math.sin(radians); double rcos = Math.cos(radians); - float x = (float) (-pivotX * rcos - pivotY * -rsin + pivotX); - float y = (float) (-pivotX * rsin - pivotY * rcos + pivotY); + float x = (float) (pivotX - pivotX * rcos + pivotY * rsin); + float y = (float) (pivotY - pivotX * rsin - pivotY * rcos); moveMap(x, y); diff --git a/vtm/src/org/oscim/tiling/MapTile.java b/vtm/src/org/oscim/tiling/MapTile.java index ac603c97..5a172396 100644 --- a/vtm/src/org/oscim/tiling/MapTile.java +++ b/vtm/src/org/oscim/tiling/MapTile.java @@ -31,7 +31,7 @@ import org.oscim.utils.quadtree.Node; public class MapTile extends Tile { /** - * + * To be removed: used by GWT backend * */ public TileLoader loader; @@ -128,10 +128,10 @@ public class MapTile extends Tile { byte proxies; /** counting the tiles that use this tile as proxy */ - byte refs; + private byte refs; /** up to 255 Threads may lock a tile */ - byte locked; + private byte locked; // only used GLRenderer when this tile sits in for another tile. // e.g. x:-1,y:0,z:1 for x:1,y:0 diff --git a/vtm/src/org/oscim/tiling/source/oscimap4/TileDecoder.java b/vtm/src/org/oscim/tiling/source/oscimap4/TileDecoder.java index 3233d4e3..f0190751 100644 --- a/vtm/src/org/oscim/tiling/source/oscimap4/TileDecoder.java +++ b/vtm/src/org/oscim/tiling/source/oscimap4/TileDecoder.java @@ -80,8 +80,6 @@ public class TileDecoder extends PbfDecoder { throws IOException { readUnsignedInt(is, buffer); - //log.debug(tile + " contentLength:" + byteCount); - setInputStream(is); mTile = tile; @@ -115,7 +113,8 @@ public class TileDecoder extends PbfDecoder { case TAG_TILE_TAG_KEYS: if (keys == null || curKey >= numKeys) { - log.debug(mTile + " wrong number of keys " + numKeys); + log.debug("{} wrong number of keys {}", + mTile, numKeys); return false; } keys[curKey++] = decodeString(); @@ -123,7 +122,8 @@ public class TileDecoder extends PbfDecoder { case TAG_TILE_TAG_VALUES: if (values == null || curValue >= numValues) { - log.debug(mTile + " wrong number of values " + numValues); + log.debug("{} wrong number of values {}", + mTile, numValues); return false; } values[curValue++] = decodeString(); @@ -153,7 +153,7 @@ public class TileDecoder extends PbfDecoder { decodeVarintArray(len, mSArray); if (!decodeTileTags(numTags, mSArray, keys, values)) { - log.debug(mTile + " invalid tags"); + log.debug("{} invalid tags", mTile); return false; } break; @@ -161,13 +161,15 @@ public class TileDecoder extends PbfDecoder { case TAG_TILE_VERSION: version = decodeVarint32(); if (version != 4) { - log.debug(mTile + " invalid version " + version); + log.debug("{} invalid version:{}", + mTile, version); return false; } break; default: - log.debug(mTile + " invalid type for tile: " + tag); + log.debug("{} invalid type for tile:{}", + mTile, tag); return false; } } @@ -175,9 +177,10 @@ public class TileDecoder extends PbfDecoder { return true; } - private boolean decodeTileTags(int numTags, short[] tagIdx, String[] keys, String[] vals) { - Tag tag; + private boolean decodeTileTags(int numTags, short[] tagIdx, + String[] keys, String[] vals) { + Tag tag; for (int i = 0, n = (numTags << 1); i < n; i += 2) { int k = tagIdx[i]; int v = tagIdx[i + 1]; @@ -291,15 +294,17 @@ public class TileDecoder extends PbfDecoder { case TAG_ELEM_COORDS: if (coordCnt == 0) { - log.debug(mTile + " no coordinates"); + log.debug("{} no coordinates", mTile); } mElem.ensurePointSize(coordCnt, false); - int cnt = decodeInterleavedPoints(mElem.points, mScaleFactor); + int cnt = decodeInterleavedPoints(mElem.points, + mScaleFactor); if (cnt != coordCnt) { - log.debug(mTile + " wrong number of coordintes " - + coordCnt + "/" + cnt); + log.debug("{} wrong number of coordintes {}/{}", mTile, + Integer.valueOf(coordCnt), + Integer.valueOf(cnt)); fail = true; } break; @@ -309,15 +314,17 @@ public class TileDecoder extends PbfDecoder { break; default: - log.debug(mTile + " invalid type for way: " + tag); + log.debug("{} invalid type for way: {}", mTile, tag); } } if (fail || numTags == 0 || numIndices == 0) { - log.debug(mTile + " failed reading way: bytes:" + bytes + " index:" - + (Arrays.toString(index)) + " tag:" - + (mElem.tags.numTags > 0 ? Arrays.deepToString(mElem.tags.tags) : "null") - + " " + numIndices + " " + coordCnt); + log.debug("{} failed: bytes:{} index:{} tags:{} ({},{})", + mTile, Integer.valueOf(bytes), + Arrays.toString(index), + mElem.tags, + Integer.valueOf(numIndices), + Integer.valueOf(coordCnt)); return false; } @@ -353,7 +360,9 @@ public class TileDecoder extends PbfDecoder { int idx = tagIds[i]; if (idx < 0 || idx > max) { - log.debug("{} invalid tag:{}", mTile, idx + ' ' + i); + log.debug("{} invalid tag:{}", mTile, + Integer.valueOf(idx), + Integer.valueOf(i)); return false; } mElem.tags.add(mTileTags.tags[idx]);