From e6920965815171e13aba8450b77c7ecc39eb0440 Mon Sep 17 00:00:00 2001 From: Tobrun Date: Fri, 1 Apr 2016 10:59:23 +0200 Subject: [android] #4565 - improved coverage of camera package --- .../mapbox/mapboxsdk/camera/CameraPosition.java | 2 +- .../mapboxsdk/camera/CameraUpdateFactory.java | 40 +++++++++++++++------- .../java/com/mapbox/mapboxsdk/maps/MapboxMap.java | 8 +++++ 3 files changed, 36 insertions(+), 14 deletions(-) (limited to 'platform/android/MapboxGLAndroidSDK/src/main/java') diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/camera/CameraPosition.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/camera/CameraPosition.java index 679a474ae7..f9346e21d6 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/camera/CameraPosition.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/camera/CameraPosition.java @@ -70,7 +70,7 @@ public final class CameraPosition implements Parcelable { @Override public int describeContents() { - return hashCode(); + return 0; } @Override 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 fdbe44a622..58272098cf 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 @@ -240,16 +240,21 @@ public final class CameraUpdateFactory { nePixel.y = Math.max(nePixel.y, viewportHeight - pixel.y); } - // Calculate wid=th/height + // Calculate width/height float width = nePixel.x - swPixel.x; float height = nePixel.y - swPixel.y; + + double zoom = 0; + float minScale = 1; // Calculate the zoom level - float scaleX = (uiSettings.getWidth() - padding.left - padding.right) / width; - float scaleY = (uiSettings.getHeight() - padding.top - padding.bottom) / height; - float minScale = scaleX < scaleY ? scaleX : scaleY; - double zoom = projection.calculateZoom(minScale); - zoom = MathUtils.clamp(zoom, (float) mapboxMap.getMinZoom(), (float) mapboxMap.getMaxZoom()); + if (padding != null) { + float scaleX = (uiSettings.getWidth() - padding.left - padding.right) / width; + float scaleY = (uiSettings.getHeight() - padding.top - padding.bottom) / height; + minScale = scaleX < scaleY ? scaleX : scaleY; + zoom = projection.calculateZoom(minScale); + zoom = MathUtils.clamp(zoom, (float) mapboxMap.getMinZoom(), (float) mapboxMap.getMaxZoom()); + } // Calculate the center point PointF paddedNEPixel = new PointF(nePixel.x + padding.right / minScale, nePixel.y + padding.top / minScale); @@ -290,13 +295,22 @@ public final class CameraUpdateFactory { // Convert point to LatLng LatLng latLng = projection.fromScreenLocation(targetPoint); - CameraPosition cameraPosition = mapboxMap.getCameraPosition(); - return new CameraPosition.Builder() - .target(latLng) - .zoom(cameraPosition.zoom) - .tilt(cameraPosition.tilt) - .bearing(cameraPosition.bearing) - .build(); + CameraPosition previousPosition = mapboxMap.getCameraPosition(); + if (latLng != null) { + return new CameraPosition.Builder() + .target(latLng) + .zoom(previousPosition.zoom) + .tilt(previousPosition.tilt) + .bearing(previousPosition.bearing) + .build(); + } else { + return new CameraPosition.Builder(true) + .tilt(previousPosition.tilt) + .zoom(previousPosition.zoom) + .bearing(previousPosition.bearing) + .target(previousPosition.target) + .build(); + } } } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java index 21aee525a3..088d43e2aa 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java @@ -1449,6 +1449,14 @@ public class MapboxMap { return mMapView; } + void setUiSettings(UiSettings uiSettings){ + mUiSettings = uiSettings; + } + + void setProjection(Projection projection){ + mProjection = projection; + } + // // Invalidate // -- cgit v1.2.1