diff options
author | Justin R. Miller <incanus@codesorcery.net> | 2015-09-07 11:29:06 -0700 |
---|---|---|
committer | Justin R. Miller <incanus@codesorcery.net> | 2015-09-07 12:09:48 -0700 |
commit | 1fd0cedfd608e216a1a88c397916c6e2b1b807dd (patch) | |
tree | b1fe96cfefa9fbd3d5c954f8dff23e5c1d8d0e84 /android/java/MapboxGLAndroidSDK/src/main | |
parent | e8d415367e44662f4cfb7b8e1ac786affc07078a (diff) | |
download | qtlocation-mapboxgl-1fd0cedfd608e216a1a88c397916c6e2b1b807dd.tar.gz |
#894 - properly extend tap bounds for marker selection
Diffstat (limited to 'android/java/MapboxGLAndroidSDK/src/main')
-rw-r--r-- | android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxgl/views/MapView.java | 23 |
1 files changed, 14 insertions, 9 deletions
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<LatLng> 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<Annotation> nearbyAnnotations = getAnnotationsInBounds(bbox); + List<Annotation> nearbyAnnotations = getAnnotationsInBounds(tapBounds); long newSelectedAnnotationID = -1; |