summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobrun <tobrun.van.nuland@gmail.com>2018-07-25 16:06:10 +0200
committerTobrun <tobrun.van.nuland@gmail.com>2018-07-25 16:18:32 +0200
commit35fcebf53a5d4a374e88de83b022bef96128fcc6 (patch)
treea58cb6c5357c21497808015dbf0bead6120b33a2
parent3a97734cd2fa1628c31237318caf34939d9ec26a (diff)
downloadqtlocation-mapboxgl-upstream/tvn-minimal-touch-target-marker.tar.gz
[android] - add minimal touch target to marker click detectionupstream/tvn-minimal-touch-target-marker
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AnnotationManager.java21
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);
}