From 1fd0cedfd608e216a1a88c397916c6e2b1b807dd Mon Sep 17 00:00:00 2001 From: "Justin R. Miller" Date: Mon, 7 Sep 2015 11:29:06 -0700 Subject: #894 - properly extend tap bounds for marker selection --- .../java/com/mapbox/mapboxgl/views/MapView.java | 23 +++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) (limited to 'android/java/MapboxGLAndroidSDK/src/main') diff --git a/android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxgl/views/MapView.java b/android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxgl/views/MapView.java index d7caf8539d..aed036f50c 100644 --- a/android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxgl/views/MapView.java +++ b/android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxgl/views/MapView.java @@ -13,6 +13,7 @@ import android.graphics.Color; import android.graphics.Matrix; import android.graphics.Paint; import android.graphics.PointF; +import android.graphics.RectF; import android.hardware.GeomagneticField; import android.hardware.Sensor; import android.hardware.SensorEvent; @@ -1045,20 +1046,24 @@ public class MapView extends FrameLayout implements LocationListener { PointF tapPoint = new PointF(x, y); - float toleranceWidth = 60 * mScreenDensity; - float toleranceHeight = 80 * mScreenDensity; + float toleranceWidth = 40 * mScreenDensity; + float toleranceHeight = 60 * mScreenDensity; - PointF tr = new PointF(tapPoint.x + toleranceWidth / 2, tapPoint.y + 2 * toleranceHeight / 3); - PointF bl = new PointF(tapPoint.x - toleranceWidth / 2, tapPoint.y - 1 * toleranceHeight / 3); + RectF tapRect = new RectF(tapPoint.x - toleranceWidth / 2, tapPoint.y - 2 * toleranceHeight / 3, + tapPoint.x + toleranceWidth / 2, tapPoint.y + 1 * toleranceHeight / 3); - LatLng sw = fromScreenLocation(bl); - LatLng ne = fromScreenLocation(tr); + List corners = Arrays.asList( + fromScreenLocation(new PointF(tapRect.left, tapRect.bottom)), + fromScreenLocation(new PointF(tapRect.left, tapRect.top)), + fromScreenLocation(new PointF(tapRect.right, tapRect.top)), + fromScreenLocation(new PointF(tapRect.right, tapRect.bottom)) + ); - BoundingBox bbox = new BoundingBox(ne, sw); + BoundingBox tapBounds = BoundingBox.fromLatLngs(corners); - addPolyline(new PolylineOptions().add(sw, ne).color(Color.RED).width(5)); + addPolyline(new PolylineOptions().addAll(corners).add(corners.get(0)).color(Color.RED).width(2)); - List nearbyAnnotations = getAnnotationsInBounds(bbox); + List nearbyAnnotations = getAnnotationsInBounds(tapBounds); long newSelectedAnnotationID = -1; -- cgit v1.2.1