From f3962b278f533bf767b348047dd011ff5e1bf8af Mon Sep 17 00:00:00 2001 From: Brad Leege Date: Thu, 3 Sep 2015 16:25:54 -0500 Subject: [PATCH] #894 - Placing InfoWindow directly on top of Marker sprite --- .../com/mapbox/mapboxgl/annotations/InfoWindow.java | 6 ++++-- .../main/java/com/mapbox/mapboxgl/views/MapView.java | 10 +++++++++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxgl/annotations/InfoWindow.java b/android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxgl/annotations/InfoWindow.java index 55bf3d4f7..c48227501 100644 --- a/android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxgl/annotations/InfoWindow.java +++ b/android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxgl/annotations/InfoWindow.java @@ -86,12 +86,14 @@ public class InfoWindow { mView.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED); PointF coords = mMapView.toScreenLocation(position); -// double y = mMapView.getTopOffsetPixelsForAnnotationSymbol(object.sprite); + double y = mMapView.getTopOffsetPixelsForAnnotationSymbol(object.sprite); + y = y * mMapView.getScreenDensity(); // Flip y coordinate as Android view origin is upper left corner coords.y = mMapView.getHeight() - coords.y; lp.leftMargin = (int) coords.x - (mView.getMeasuredWidth() / 2); - lp.topMargin = (int) coords.y - (mView.getMeasuredHeight()); + // Add y because it's a negative value + lp.topMargin = (int) coords.y - mView.getMeasuredHeight() + (int) y; close(); //if it was already opened mMapView.addView(mView, lp); diff --git a/android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxgl/views/MapView.java b/android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxgl/views/MapView.java index 4aeb4ee06..19a9a755b 100644 --- a/android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxgl/views/MapView.java +++ b/android/java/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxgl/views/MapView.java @@ -732,7 +732,15 @@ public class MapView extends FrameLayout implements LocationListener { return mNativeMapView.getTopOffsetPixelsForAnnotationSymbol(symbolName); } - // + /** + * Common Screen Density + * @return Screen Density + */ + public float getScreenDensity() { + return mScreenDensity; + } + + // // Lifecycle events //