diff options
author | Tobrun <tobrun.van.nuland@gmail.com> | 2018-07-25 16:06:10 +0200 |
---|---|---|
committer | Tobrun <tobrun@mapbox.com> | 2018-07-26 13:04:32 +0200 |
commit | 5fcd6e38a9e9ca755d997b83f007f8a2f435cf45 (patch) | |
tree | 4006f20eb2be5182d81ea0bdf70bc63c5666c2ec /platform/android | |
parent | b8b0134d65386d91d6bc0e2abb2971df630ef0a9 (diff) | |
download | qtlocation-mapboxgl-5fcd6e38a9e9ca755d997b83f007f8a2f435cf45.tar.gz |
[android] - add minimal touch target to marker click detection
Diffstat (limited to 'platform/android')
-rw-r--r-- | platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AnnotationManager.java | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AnnotationManager.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AnnotationManager.java index 64b33ad598..549a550d01 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AnnotationManager.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AnnotationManager.java @@ -472,9 +472,12 @@ class AnnotationManager { private final MarkerViewManager markerViewManager; private final Projection projection; + private final int minimalTouchSize; private View view; private Bitmap bitmap; + private int bitmapWidth; + private int bitmapHeight; private PointF markerLocation; private Rect hitRectView = new Rect(); @@ -486,6 +489,7 @@ class AnnotationManager { MarkerHitResolver(@NonNull MapboxMap mapboxMap) { this.markerViewManager = mapboxMap.getMarkerViewManager(); this.projection = mapboxMap.getProjection(); + this.minimalTouchSize = (int) (32 * Mapbox.getApplicationContext().getResources().getDisplayMetrics().density); } public long execute(MarkerHit markerHit) { @@ -515,10 +519,21 @@ class AnnotationManager { private void resolveForMarker(MarkerHit markerHit, Marker marker) { markerLocation = projection.toScreenLocation(marker.getPosition()); bitmap = marker.getIcon().getBitmap(); - hitRectMarker.set(0, 0, bitmap.getWidth(), bitmap.getHeight()); + + bitmapHeight = bitmap.getHeight(); + if (bitmapHeight < minimalTouchSize) { + bitmapHeight = minimalTouchSize; + } + + bitmapWidth = bitmap.getWidth(); + if (bitmapWidth < minimalTouchSize) { + bitmapWidth = minimalTouchSize; + } + + hitRectMarker.set(0, 0, bitmapWidth, bitmapHeight); hitRectMarker.offsetTo( - markerLocation.x - bitmap.getWidth() / 2, - markerLocation.y - bitmap.getHeight() / 2 + markerLocation.x - bitmapWidth / 2, + markerLocation.y - bitmapHeight / 2 ); hitTestMarker(markerHit, marker, hitRectMarker); } |