diff options
author | Tobrun <tobrun.van.nuland@gmail.com> | 2016-10-25 15:11:49 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-10-25 15:11:49 +0200 |
commit | 94b1a53f06750926a88b62f8e1cedd42d1df91da (patch) | |
tree | 33aba8b67aea82ea8ba96ba9d9f2b21455196f6a /platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java | |
parent | 068e78a2e77b866364a9710a76ed114860f361c9 (diff) | |
download | qtlocation-mapboxgl-94b1a53f06750926a88b62f8e1cedd42d1df91da.tar.gz |
[android] - move marker view click handling to core (#5639)
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java')
-rw-r--r-- | platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java | 28 |
1 files changed, 25 insertions, 3 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java index c1d807d451..920cafcb8c 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java @@ -1014,12 +1014,12 @@ public class MapView extends FrameLayout { icon = IconFactory.getInstance(getContext()).defaultMarker(); Bitmap bitmap = icon.getBitmap(); averageIconHeight = averageIconHeight + (bitmap.getHeight() / 2 - averageIconHeight) / iconSize; - averageIconWidth = averageIconHeight + (bitmap.getWidth() - averageIconHeight) / iconSize; + averageIconWidth = averageIconWidth + (bitmap.getWidth() - averageIconWidth) / iconSize; marker.setIcon(icon); } else { Bitmap bitmap = icon.getBitmap(); averageIconHeight = averageIconHeight + (bitmap.getHeight() - averageIconHeight) / iconSize; - averageIconWidth = averageIconHeight + (bitmap.getWidth() - averageIconHeight) / iconSize; + averageIconWidth = averageIconWidth + (bitmap.getWidth() - averageIconWidth) / iconSize; } if (!icons.contains(icon)) { @@ -1034,6 +1034,27 @@ public class MapView extends FrameLayout { return icon; } + Icon loadIconForMarkerView(MarkerView marker) { + Icon icon = marker.getIcon(); + int iconSize = icons.size() + 1; + if (icon == null) { + icon = IconFactory.getInstance(getContext()).defaultMarkerView(); + marker.setIcon(icon); + } + Bitmap bitmap = icon.getBitmap(); + averageIconHeight = averageIconHeight + (bitmap.getHeight() - averageIconHeight) / iconSize; + averageIconWidth = averageIconWidth + (bitmap.getWidth() - averageIconWidth) / iconSize; + if (!icons.contains(icon)) { + icons.add(icon); + } else { + Icon oldIcon = icons.get(icons.indexOf(icon)); + if (!oldIcon.getBitmap().sameAs(icon.getBitmap())) { + throw new IconBitmapChangedException(); + } + } + return icon; + } + void loadIcon(Icon icon) { if (destroyed) { return; @@ -1875,9 +1896,10 @@ public class MapView extends FrameLayout { if (annotation instanceof Marker) { if (annotation.getId() == newSelectedMarkerId) { if (selectedMarkers.isEmpty() || !selectedMarkers.contains(annotation)) { - // only handle click if no marker view is available if (!(annotation instanceof MarkerView)) { mapboxMap.selectMarker((Marker) annotation); + } else { + mapboxMap.getMarkerViewManager().onClickMarkerView((MarkerView) annotation); } } break; |