summaryrefslogtreecommitdiff
path: root/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/camera
diff options
context:
space:
mode:
authorTobrun <tobrun.van.nuland@gmail.com>2016-04-01 10:59:23 +0200
committerTobrun <tobrun.van.nuland@gmail.com>2016-04-01 10:59:23 +0200
commite6920965815171e13aba8450b77c7ecc39eb0440 (patch)
tree675297ec818624226c4ea0e706864a7f5fdb1437 /platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/camera
parent01a0f5464d8c4b376a30144499dcc44d4006b9f4 (diff)
downloadqtlocation-mapboxgl-e6920965815171e13aba8450b77c7ecc39eb0440.tar.gz
[android] #4565 - improved coverage of camera package
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/camera')
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/camera/CameraPosition.java2
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/camera/CameraUpdateFactory.java40
2 files changed, 28 insertions, 14 deletions
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();
+ }
}
}