From cd54f0dfe697653f2ec31c1b54612aeda9a1c4a7 Mon Sep 17 00:00:00 2001 From: Hannes Janetzek <hannes.janetzek@gmail.com> Date: Mon, 11 Mar 2013 16:11:50 +0100 Subject: [PATCH] begin integrating of area zoom interaction --- src/org/oscim/overlay/PathOverlay.java | 2 +- src/org/oscim/view/MapViewPosition.java | 36 ++++++++++++------------- src/org/oscim/view/TouchHandler.java | 3 +++ 3 files changed, 22 insertions(+), 19 deletions(-) diff --git a/src/org/oscim/overlay/PathOverlay.java b/src/org/oscim/overlay/PathOverlay.java index f6573acf..a1b47a33 100644 --- a/src/org/oscim/overlay/PathOverlay.java +++ b/src/org/oscim/overlay/PathOverlay.java @@ -37,7 +37,7 @@ import android.graphics.Paint.Cap; public class PathOverlay extends Overlay { /** Stores points, converted to the map projection. */ - /* package */final ArrayList<GeoPoint> mPoints; + /* package */protected final ArrayList<GeoPoint> mPoints; /* package */boolean mUpdatePoints; /** Paint settings. */ diff --git a/src/org/oscim/view/MapViewPosition.java b/src/org/oscim/view/MapViewPosition.java index 75493f72..75d1cd92 100644 --- a/src/org/oscim/view/MapViewPosition.java +++ b/src/org/oscim/view/MapViewPosition.java @@ -15,9 +15,6 @@ */ package org.oscim.view; -// TODO: -// - fix ray intersection for unproject, see getZ() - import java.lang.ref.WeakReference; import org.oscim.core.BoundingBox; @@ -149,6 +146,7 @@ public class MapViewPosition { /** * get a copy of current matrices + * * @param view ... * @param proj ... * @param vp view and projection @@ -157,7 +155,7 @@ public class MapViewPosition { if (view != null) System.arraycopy(mViewMatrix, 0, view, 0, 16); - if (proj!= null) + if (proj != null) System.arraycopy(mProjMatrix, 0, proj, 0, 16); if (vp != null) @@ -639,21 +637,23 @@ public class MapViewPosition { // global scale mMapScale = (1 << mZoomLevel) * mScale; //Log.d(TAG, "zoom: " + bbox + " " + zx + " " + zy + " / " + mScale + " " + mZoomLevel); - updatePosition(); + setMapCenter(bbox.getCenterPoint()); - // reset rotation/tilt - mTilt = 0; - mRotation = 0; - updateMatrix(); - - GeoPoint geoPoint = bbox.getCenterPoint(); - mEndX = MercatorProjection.longitudeToPixelX(geoPoint.getLongitude(), mZoomLevel); - mEndY = MercatorProjection.latitudeToPixelY(geoPoint.getLatitude(), mZoomLevel); - mStartX = mPosX; - mStartY = mPosY; - - mDuration = 300; - mHandler.start((int) mDuration); + // updatePosition(); + // + // // reset rotation/tilt + // mTilt = 0; + // mRotation = 0; + // updateMatrix(); + // + // GeoPoint geoPoint = bbox.getCenterPoint(); + // mEndX = MercatorProjection.longitudeToPixelX(geoPoint.getLongitude(), mZoomLevel); + // mEndY = MercatorProjection.latitudeToPixelY(geoPoint.getLatitude(), mZoomLevel); + // mStartX = mPosX; + // mStartY = mPosY; + // + // mDuration = 300; + // mHandler.start((int) mDuration); } public synchronized void animateTo(GeoPoint geoPoint) { diff --git a/src/org/oscim/view/TouchHandler.java b/src/org/oscim/view/TouchHandler.java index 02816b1b..3f3d7a6c 100644 --- a/src/org/oscim/view/TouchHandler.java +++ b/src/org/oscim/view/TouchHandler.java @@ -157,6 +157,9 @@ final class TouchHandler implements OnGestureListener, OnDoubleTapListener { if (Math.abs(mx) > JUMP_THRESHOLD || Math.abs(my) > JUMP_THRESHOLD) return true; + if (e.getPointerCount() < 2) + return true; + if (mMulti == 0) return true;