diff options
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations')
2 files changed, 8 insertions, 18 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerView.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerView.java index cee634c435..f84776230f 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerView.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerView.java @@ -86,6 +86,7 @@ public class MarkerView extends Marker { public void setAnchor(@FloatRange(from = 0.0, to = 1.0) float u, @FloatRange(from = 0.0, to = 1.0) float v) { this.anchorU = u; this.anchorV = v; + setOffset(-1, -1); } /** @@ -107,26 +108,16 @@ public class MarkerView extends Marker { } /** - * Internal method to set the horizontal calculated offset. + * Internal method to set the calculated offset. * <p> * These are calculated based on the View bounds and the provided anchor. * </p> * * @param x the x-value of the offset - */ - void setOffsetX(float x) { - offsetX = x; - } - - /** - * Internal method to set the vertical calculated offset. - * <p> - * These are calculated based on the View bounds and the provided anchor. - * </p> - * * @param y the y-value of the offset */ - void setOffsetY(float y) { + void setOffset(float x, float y) { + offsetX = x; offsetY = y; } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerViewManager.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerViewManager.java index a18b864cfe..bfe007a733 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerViewManager.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerViewManager.java @@ -118,8 +118,7 @@ public class MarkerViewManager { if (marker.getOffsetX() == -1) { int x = (int) (marker.getAnchorU() * convertView.getMeasuredWidth()); int y = (int) (marker.getAnchorV() * convertView.getMeasuredHeight()); - marker.setOffsetX(x); - marker.setOffsetY(y); + marker.setOffset(x, y); } convertView.setX(point.x - marker.getOffsetX()); @@ -247,6 +246,8 @@ public class MarkerViewManager { for (final MapboxMap.MarkerViewAdapter<?> adapter : markerViewAdapters) { if (adapter.getMarkerClass().equals(marker.getClass())) { if (adapter.prepareViewForReuse(marker, viewHolder)) { + // reset offset for reuse + marker.setOffset(-1, -1); adapter.releaseView(viewHolder); } } @@ -417,11 +418,9 @@ public class MarkerViewManager { // update position on map if (marker.getOffsetX() == -1) { - PointF point = mapboxMap.getProjection().toScreenLocation(marker.getPosition()); int x = (int) (marker.getAnchorU() * view.getMeasuredWidth()); int y = (int) (marker.getAnchorV() * view.getMeasuredHeight()); - marker.setOffsetX(x); - marker.setOffsetY(y); + marker.setOffset(x, y); } // InfoWindow offset |