diff options
author | Tobrun <tobrun@mapbox.com> | 2016-05-17 09:54:04 +0200 |
---|---|---|
committer | Tobrun Van Nuland <tobrun.van.nuland@gmail.com> | 2016-05-26 11:30:27 +0200 |
commit | 034246e00af154bdfe777e9b59ddb4703f2b1e89 (patch) | |
tree | 86b16657984a2a148a1a9fe59fdc50982929e1e7 /platform/android | |
parent | 102e62ae5582ec5cad5d8bbe3d42f99b875d143e (diff) | |
download | qtlocation-mapboxgl-034246e00af154bdfe777e9b59ddb4703f2b1e89.tar.gz |
[android] #5034 - LatLngBounds Camera update not taking map padding in account
[android] #5034 - padding not being included in getVisibleBounds
Diffstat (limited to 'platform/android')
4 files changed, 23 insertions, 7 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/camera/CameraUpdateFactory.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/camera/CameraUpdateFactory.java index 8ba0b4e5c8..028d077a09 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/camera/CameraUpdateFactory.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/camera/CameraUpdateFactory.java @@ -226,7 +226,14 @@ public final class CameraUpdateFactory { // Get required objects Projection projection = mapboxMap.getProjection(); UiSettings uiSettings = mapboxMap.getUiSettings(); - RectF padding = getPadding(); + + // calculate correct padding + int[] mapPadding = mapboxMap.getPadding(); + RectF latLngPadding = getPadding(); + RectF padding = new RectF(latLngPadding.left + mapPadding[0], + latLngPadding.top + mapPadding[1], + latLngPadding.right + mapPadding[2], + latLngPadding.bottom + mapPadding[3]); // Calculate the bounds of the possibly rotated shape with respect to the viewport PointF nePixel = new PointF(-Float.MAX_VALUE, -Float.MAX_VALUE); @@ -244,7 +251,6 @@ public final class CameraUpdateFactory { float width = nePixel.x - swPixel.x; float height = nePixel.y - swPixel.y; - double zoom = 0; float minScale = 1; // Calculate the zoom level 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 2370af505b..9ec4a90187 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 @@ -672,6 +672,14 @@ public class MapView extends FrameLayout { return mContentPaddingBottom; } + int getContentWidth(){ + return getWidth() - mContentPaddingLeft - mContentPaddingRight; + } + + int getContentHeight(){ + return getHeight() - mContentPaddingBottom - mContentPaddingTop; + } + // // Zoom // diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Projection.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Projection.java index 9482b1a2f7..1605a8c655 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Projection.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Projection.java @@ -57,8 +57,8 @@ public class Projection { public VisibleRegion getVisibleRegion() { LatLngBounds.Builder builder = new LatLngBounds.Builder(); - int viewportWidth = mMapView.getWidth(); - int viewportHeight = mMapView.getHeight(); + int viewportWidth = mMapView.getContentWidth(); + int viewportHeight = mMapView.getContentHeight(); LatLng topLeft = fromScreenLocation(new PointF(0, 0)); LatLng topRight = fromScreenLocation(new PointF(viewportWidth, 0)); diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/LatLngBoundsActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/LatLngBoundsActivity.java index fa4bf46d0e..b9a438b7d5 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/LatLngBoundsActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/LatLngBoundsActivity.java @@ -68,10 +68,12 @@ public class LatLngBoundsActivity extends AppCompatActivity { .include(LOS_ANGELES) .build(); - // And padding - int padding = (int) getResources().getDimension(R.dimen.coordinatebounds_margin); + // Add map padding + int mapPadding = (int) getResources().getDimension(R.dimen.fab_margin); + mapboxMap.setPadding(mapPadding, mapPadding, mapPadding, mapPadding); - // Move camera to the bounds with padding + // Move camera to the bounds with added padding + int padding = (int) getResources().getDimension(R.dimen.coordinatebounds_margin); mapboxMap.animateCamera(CameraUpdateFactory.newLatLngBounds(bounds, padding)); // Call mapboxMap.getProjection().getVisibleRegion().latLngBounds to retrieve the bounds |