From 425d718e42202aecc69e9085532a90581b2abbfe Mon Sep 17 00:00:00 2001 From: Brad Leege Date: Thu, 18 Feb 2016 13:55:31 -0600 Subject: [PATCH] [android] #3889 - Building trackGestureEvent() method and using it initially for Single Tap gesture --- .../com/mapbox/mapboxsdk/maps/MapView.java | 24 +++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java index 5bd0c5c87..1cdf226ae 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java @@ -1529,8 +1529,7 @@ public class MapView extends FrameLayout { } // This class handles one finger gestures - private class GestureListener extends - GestureDetector.SimpleOnGestureListener { + private class GestureListener extends GestureDetector.SimpleOnGestureListener { // Must always return true otherwise all events are ignored @Override @@ -1648,6 +1647,8 @@ public class MapView extends FrameLayout { } } + trackGestureEvent(MapboxEvent.GESTURE_SINGLETAP, e); + return true; } @@ -1722,6 +1723,25 @@ public class MapView extends FrameLayout { return true; } + + /** + * Helper method for tracking gesture events + * @param gestureId Type of Gesture See {@see MapboxEvent#GESTURE_SINGLETAP MapboxEvent#GESTURE_DOUBLETAP MapboxEvent#GESTURE_TWO_FINGER_SINGLETAP MapboxEvent#GESTURE_QUICK_ZOOM MapboxEvent#GESTURE_PAN_START MapboxEvent#GESTURE_PINCH_START MapboxEvent#GESTURE_ROTATION_START MapboxEvent#GESTURE_PITCH_START} + * @param motionEvent Original MotionEvent at start of gesture + */ + private void trackGestureEvent(@NonNull String gestureId, @NonNull MotionEvent motionEvent) { + + LatLng tapLatLng = fromScreenLocation(new PointF(motionEvent.getX(), motionEvent.getY())); + + Hashtable evt = new Hashtable<>(); + evt.put(MapboxEvent.ATTRIBUTE_EVENT, MapboxEvent.TYPE_MAP_CLICK); + evt.put(MapboxEvent.KEY_GESTURE_ID, gestureId); + evt.put(MapboxEvent.KEY_LATITUDE, tapLatLng.getLatitude()); + evt.put(MapboxEvent.KEY_LONGITUDE, tapLatLng.getLongitude()); + evt.put(MapboxEvent.KEY_ZOOM, mMapboxMap.getCameraPosition().zoom); + + MapboxEventManager.getMapboxEventManager(getContext()).pushEvent(evt); + } } // This class handles two finger gestures and double-tap drag gestures