summaryrefslogtreecommitdiff
path: root/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AnnotationManager.java
diff options
context:
space:
mode:
authorTobrun <tobrun.van.nuland@gmail.com>2016-11-14 12:08:03 +0100
committerGitHub <noreply@github.com>2016-11-14 12:08:03 +0100
commitf66ea0bef9071cf7c27e456e7eb9528b8cff5e30 (patch)
tree7d9e85da24481a6d0ca516179753bc1cdece0de2 /platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AnnotationManager.java
parentfa6d5864177bfb68e99f8732068a3402cc5aadfd (diff)
downloadqtlocation-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.java19
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);
}
}