diff options
author | Tobrun <tobrun.van.nuland@gmail.com> | 2016-11-14 12:08:03 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-11-14 12:08:03 +0100 |
commit | f66ea0bef9071cf7c27e456e7eb9528b8cff5e30 (patch) | |
tree | 7d9e85da24481a6d0ca516179753bc1cdece0de2 /platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AnnotationManager.java | |
parent | fa6d5864177bfb68e99f8732068a3402cc5aadfd (diff) | |
download | qtlocation-mapboxgl-f66ea0bef9071cf7c27e456e7eb9528b8cff5e30.tar.gz |
[android] - getMarkerViews in rect should return in bound views (#7015)
* [android] - getMarkerViews in rectangle should only return in bound views.
* added example in test app for debugging
* Covert rectangle coming in to density dependant rectangle
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AnnotationManager.java')
-rw-r--r-- | platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AnnotationManager.java | 19 |
1 files changed, 16 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 0eae8eb0a9..4b26be558f 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 @@ -329,7 +329,14 @@ class AnnotationManager { return selectedMarkers; } - public List<Marker> getMarkersInRect(@NonNull RectF rect) { + public List<Marker> getMarkersInRect(@NonNull RectF rectangle) { + // convert Rectangle to be density depedent + float pixelRatio = nativeMapView.getPixelRatio(); + RectF rect = new RectF(rectangle.left / pixelRatio, + rectangle.top / pixelRatio, + rectangle.right / pixelRatio, + rectangle.bottom / pixelRatio); + long[] ids = nativeMapView.queryPointAnnotations(rect); List<Long> idsList = new ArrayList<>(ids.length); @@ -350,7 +357,13 @@ class AnnotationManager { return new ArrayList<>(annotations); } - public List<MarkerView> getMarkerViewsInRect(@NonNull RectF rect) { + public List<MarkerView> getMarkerViewsInRect(@NonNull RectF rectangle) { + float pixelRatio = nativeMapView.getPixelRatio(); + RectF rect = new RectF(rectangle.left / pixelRatio, + rectangle.top / pixelRatio, + rectangle.right / pixelRatio, + rectangle.bottom / pixelRatio); + long[] ids = nativeMapView.queryPointAnnotations(rect); List<Long> idsList = new ArrayList<>(ids.length); @@ -363,7 +376,7 @@ class AnnotationManager { int count = annotationList.size(); for (int i = 0; i < count; i++) { Annotation annotation = annotationList.get(i); - if (annotation instanceof MarkerView) { + if (annotation instanceof MarkerView && idsList.contains(annotation.getId())) { annotations.add((MarkerView) annotation); } } |