summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobrun <tobrun.van.nuland@gmail.com>2016-09-29 11:41:08 +0200
committerGitHub <noreply@github.com>2016-09-29 11:41:08 +0200
commitc97a1047dfabe06cd87a0d1bb6dfd855f9727629 (patch)
tree96b295b9fa1ea347e9d92f99cf2525e1d4611210
parent1777b8757a437d6f27928c2bb3d821fc8679cf20 (diff)
downloadqtlocation-mapboxgl-c97a1047dfabe06cd87a0d1bb6dfd855f9727629.tar.gz
6453 restore tilt after orientation (#6491)
* [android] - correct tilt value when restoring activity or creating from xml * correct values requesting camera position adhoc * updated logic change in unit tests
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/camera/CameraPosition.java33
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/camera/CameraUpdateFactory.java8
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/constants/MathConstants.java22
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/geometry/LatLng.java11
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java2
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/test/java/com/mapbox/mapboxsdk/camera/CameraPositionTest.java39
6 files changed, 16 insertions, 99 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 f1432b1e8d..e1a464bcdf 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
@@ -3,11 +3,9 @@ package com.mapbox.mapboxsdk.camera;
import android.content.res.TypedArray;
import android.os.Parcel;
import android.os.Parcelable;
-import android.support.annotation.FloatRange;
import com.mapbox.mapboxsdk.R;
import com.mapbox.mapboxsdk.constants.MapboxConstants;
-import com.mapbox.mapboxsdk.constants.MathConstants;
import com.mapbox.mapboxsdk.geometry.LatLng;
import com.mapbox.mapboxsdk.utils.MathUtils;
@@ -125,7 +123,6 @@ public final class CameraPosition implements Parcelable {
private LatLng target = null;
private double tilt = -1;
private double zoom = -1;
- private boolean isRadian;
/**
* Creates an empty builder.
@@ -135,15 +132,6 @@ public final class CameraPosition implements Parcelable {
}
/**
- * Creates a builder for building CameraPosition objects using radians.
- *
- * @param isRadian true if heading is in radians
- */
- public Builder(boolean isRadian) {
- this.isRadian = isRadian;
- }
-
- /**
* Create Builder with an existing CameraPosition data.
*
* @param previous Existing CameraPosition values to use
@@ -170,7 +158,7 @@ public final class CameraPosition implements Parcelable {
double lat = typedArray.getFloat(R.styleable.MapView_center_latitude, 0.0f);
double lng = typedArray.getFloat(R.styleable.MapView_center_longitude, 0.0f);
this.target = new LatLng(lat, lng);
- this.tilt = typedArray.getFloat(R.styleable.MapView_tilt, 0.0f);
+ this.tilt = Math.toRadians(typedArray.getFloat(R.styleable.MapView_tilt, 0.0f));
this.zoom = typedArray.getFloat(R.styleable.MapView_zoom, 0.0f);
}
}
@@ -203,7 +191,7 @@ public final class CameraPosition implements Parcelable {
}
/**
- * Create Builder from an exisiting array of doubles.
+ * Create Builder from an existing array of doubles.
*
* @param values Values containing target, bearing, tilt and zoom
*/
@@ -212,7 +200,7 @@ public final class CameraPosition implements Parcelable {
if (values != null && values.length == 5) {
this.target = new LatLng(values[0], values[1]);
this.bearing = (float) values[2];
- this.tilt = (float) values[3];
+ this.tilt = Math.toRadians(values[3]);
this.zoom = (float) values[4];
}
}
@@ -224,12 +212,7 @@ public final class CameraPosition implements Parcelable {
* @return Builder
*/
public Builder bearing(double bearing) {
- if (isRadian) {
- this.bearing = bearing;
- } else {
- // converting degrees to radians
- this.bearing = (float) (-bearing * MathConstants.DEG2RAD);
- }
+ this.bearing = bearing;
return this;
}
@@ -259,14 +242,8 @@ public final class CameraPosition implements Parcelable {
* @param tilt Tilt value
* @return Builder
*/
- @FloatRange(from = 0.0, to = 60.0)
public Builder tilt(double tilt) {
- if (isRadian) {
- this.tilt = tilt;
- } else {
- // converting degrees to radians
- this.tilt = (float) (MathUtils.clamp(tilt, MapboxConstants.MINIMUM_TILT, MapboxConstants.MAXIMUM_TILT) * MathConstants.DEG2RAD);
- }
+ this.tilt = (float) Math.toRadians(MathUtils.clamp(tilt, MapboxConstants.MINIMUM_TILT, MapboxConstants.MAXIMUM_TILT));
return this;
}
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 028d077a09..73e67270ae 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
@@ -184,8 +184,8 @@ public final class CameraUpdateFactory {
public CameraPosition getCameraPosition(@NonNull MapboxMap mapboxMap) {
CameraPosition previousPosition = mapboxMap.getCameraPosition();
if (target == null) {
- return new CameraPosition.Builder(true)
- .tilt(tilt)
+ return new CameraPosition.Builder()
+ .tilt(Math.toDegrees(tilt))
.zoom(zoom)
.bearing(bearing)
.target(previousPosition.target)
@@ -310,8 +310,8 @@ public final class CameraUpdateFactory {
.bearing(previousPosition.bearing)
.build();
} else {
- return new CameraPosition.Builder(true)
- .tilt(previousPosition.tilt)
+ return new CameraPosition.Builder()
+ .tilt(Math.toDegrees(previousPosition.tilt))
.zoom(previousPosition.zoom)
.bearing(previousPosition.bearing)
.target(previousPosition.target)
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/constants/MathConstants.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/constants/MathConstants.java
deleted file mode 100644
index 6e320cc9f6..0000000000
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/constants/MathConstants.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.mapbox.mapboxsdk.constants;
-
-/**
- * MathConstants exposes math related constant values
- */
-public class MathConstants {
-
- /**
- * Constant used to convert degrees to radials
- */
- public static final double DEG2RAD = (Math.PI / 180.0);
-
- /**
- * Constant used to convert radials to degrees
- */
- public static final double RAD2DEG = (180.0 / Math.PI);
-
- /**
- * The number PI
- */
- public static final double PI = Math.PI;
-}
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/geometry/LatLng.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/geometry/LatLng.java
index 1ba2a14e94..4449a7fe0d 100644
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/geometry/LatLng.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/geometry/LatLng.java
@@ -5,11 +5,8 @@ import android.os.Parcel;
import android.os.Parcelable;
import com.mapbox.mapboxsdk.constants.GeoConstants;
-import com.mapbox.mapboxsdk.constants.MathConstants;
import com.mapbox.mapboxsdk.utils.MathUtils;
-import java.io.Serializable;
-
/**
* A geographical location which contains a single latitude, longitude pair, with
* optional altitude.
@@ -188,10 +185,10 @@ public class LatLng implements ILatLng, Parcelable {
return 0.0;
}
- final double a1 = MathConstants.DEG2RAD * this.latitude;
- final double a2 = MathConstants.DEG2RAD * this.longitude;
- final double b1 = MathConstants.DEG2RAD * other.getLatitude();
- final double b2 = MathConstants.DEG2RAD * other.getLongitude();
+ final double a1 = Math.toRadians(this.latitude);
+ final double a2 = Math.toRadians(this.longitude);
+ final double b1 = Math.toRadians(other.getLatitude());
+ final double b2 = Math.toRadians(other.getLongitude());
final double cosa1 = Math.cos(a1);
final double cosb1 = Math.cos(b1);
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 6896e9a236..fc46f3e903 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
@@ -382,7 +382,7 @@ public class MapView extends FrameLayout {
// Get previous camera position
CameraPosition cameraPosition = savedInstanceState.getParcelable(MapboxConstants.STATE_CAMERA_POSITION);
if (cameraPosition != null) {
- mapboxMap.moveCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
+ mapboxMap.moveCamera(CameraUpdateFactory.newCameraPosition(new CameraPosition.Builder(cameraPosition).build()));
}
UiSettings uiSettings = mapboxMap.getUiSettings();
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/test/java/com/mapbox/mapboxsdk/camera/CameraPositionTest.java b/platform/android/MapboxGLAndroidSDKTestApp/src/test/java/com/mapbox/mapboxsdk/camera/CameraPositionTest.java
index f8c6a1a3c8..56310be86e 100644
--- a/platform/android/MapboxGLAndroidSDKTestApp/src/test/java/com/mapbox/mapboxsdk/camera/CameraPositionTest.java
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/test/java/com/mapbox/mapboxsdk/camera/CameraPositionTest.java
@@ -5,7 +5,6 @@ import android.os.Parcelable;
import com.mapbox.mapboxsdk.R;
import com.mapbox.mapboxsdk.constants.MapboxConstants;
-import com.mapbox.mapboxsdk.constants.MathConstants;
import com.mapbox.mapboxsdk.geometry.LatLng;
import com.mapbox.mapboxsdk.utils.MathUtils;
import com.mapbox.mapboxsdk.utils.MockParcel;
@@ -59,7 +58,7 @@ public class CameraPositionTest {
CameraPosition cameraPosition = new CameraPosition.Builder(typedArray).build();
assertEquals("bearing should match", bearing, cameraPosition.bearing, DELTA);
assertEquals("latlng should match", new LatLng(latitude, longitude), cameraPosition.target);
- assertEquals("tilt should match", tilt, cameraPosition.tilt, DELTA);
+ assertEquals("tilt should match", Math.toRadians(tilt), cameraPosition.tilt, DELTA);
assertEquals("zoom should match", zoom, cameraPosition.zoom, DELTA);
}
@@ -75,7 +74,7 @@ public class CameraPositionTest {
CameraPosition cameraPosition = new CameraPosition.Builder(cameraVars).build();
assertEquals("bearing should match", bearing, cameraPosition.bearing, DELTA);
assertEquals("latlng should match", new LatLng(latitude, longitude), cameraPosition.target);
- assertEquals("tilt should match", tilt, cameraPosition.tilt, DELTA);
+ assertEquals("tilt should match", Math.toRadians(tilt), cameraPosition.tilt, DELTA);
assertEquals("zoom should match", zoom, cameraPosition.zoom, DELTA);
}
@@ -94,40 +93,6 @@ public class CameraPositionTest {
}
@Test
- public void testRadianBuilder() {
- LatLng latLng = new LatLng(1, 2);
- CameraPosition.Builder builder = new CameraPosition.Builder(true);
- builder.target(latLng);
- builder.zoom(3);
- builder.tilt(4);
- builder.bearing(5);
- CameraPosition cameraPosition = new CameraPosition(latLng, 3, 4, 5);
- assertEquals("CameraPosition should match", cameraPosition, builder.build());
- }
-
- @Test
- public void testDegreesRadianBuilder() {
- LatLng latLng = new LatLng(1, 2);
- float tilt = 4;
- float bearing = 5;
- float bearingRadian = (float) (-bearing * MathConstants.DEG2RAD);
- float tiltRadian = (float) (MathUtils.clamp(tilt, MapboxConstants.MINIMUM_TILT, MapboxConstants.MAXIMUM_TILT) * MathConstants.DEG2RAD);
-
- CameraPosition.Builder degreeBuilder = new CameraPosition.Builder(false);
- degreeBuilder.target(latLng);
- degreeBuilder.zoom(3);
- degreeBuilder.tilt(tilt);
- degreeBuilder.bearing(bearing);
-
- CameraPosition.Builder radianBuilder = new CameraPosition.Builder(true);
- radianBuilder.target(latLng);
- radianBuilder.zoom(3);
- radianBuilder.tilt(tiltRadian);
- radianBuilder.bearing(bearingRadian);
- assertEquals("CameraPosition should match", radianBuilder.build(), degreeBuilder.build());
- }
-
- @Test
public void testZoomUpdateBuilder() {
float zoomLevel = 5;
CameraPosition.Builder builder = new CameraPosition.Builder(