diff options
author | Łukasz Paczos <lukas.paczos@gmail.com> | 2019-09-04 14:07:43 +0200 |
---|---|---|
committer | Łukasz Paczos <lukas.paczos@gmail.com> | 2019-09-04 14:07:43 +0200 |
commit | edabd97109b9d13d09f25d526f02fca83890d36c (patch) | |
tree | a38b611b6be8a883ba78741cd65ec3e7ee859d10 | |
parent | 89038a11f13682d4388f9ac05d86c21f85a523be (diff) |
[android][wip] camera - exposed bearing, pitch, padding
4 files changed, 115 insertions, 0 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/BearingCameraTransition.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/BearingCameraTransition.java new file mode 100644 index 000000000..2a5bf735f --- /dev/null +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/BearingCameraTransition.java @@ -0,0 +1,20 @@ +package com.mapbox.mapboxsdk.maps; + +import android.view.animation.Interpolator; + +public class BearingCameraTransition extends CameraTransition<Double> { + + public BearingCameraTransition(int type, double duration, double delay, Double endValue, Interpolator interpolator) { + super(type, duration, delay, endValue, interpolator); + } + + @Override + int getCameraProperty() { + return PROPERTY_BEARING; + } + + @Override + Double getAnimatedValue(double fraction) { + return getStartValue() + ((getEndValue() - getStartValue()) * fraction); + } +} diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapCameraController.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapCameraController.java index 27c8f188e..76d4dd23f 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapCameraController.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapCameraController.java @@ -63,6 +63,18 @@ public class MapCameraController { case CameraTransition.PROPERTY_ZOOM: builder.zoom(-1); break; + + case CameraTransition.PROPERTY_PITCH: + builder.tilt(-1); + break; + + case CameraTransition.PROPERTY_BEARING: + builder.bearing(-1); + break; + + case CameraTransition.PROPERTY_PADDING: + builder.padding(null); + break; } finalUpdate = builder.build(); } @@ -113,6 +125,22 @@ public class MapCameraController { case CameraTransition.PROPERTY_ZOOM: builder.zoom((double) value); break; + + case CameraTransition.PROPERTY_PITCH: + builder.tilt((double) value); + break; + + case CameraTransition.PROPERTY_BEARING: + builder.bearing((double) value); + break; + + case CameraTransition.PROPERTY_PADDING: + double[] padding = new double[4]; + for (int i = 0; i < 4; i++) { + padding[i] = ((Double[]) value)[i]; + } + builder.padding(padding); + break; } } } @@ -145,8 +173,27 @@ public class MapCameraController { case CameraTransition.PROPERTY_CENTER: transition.initTime(transform.getCameraPosition().target, time); break; + case CameraTransition.PROPERTY_ZOOM: transition.initTime(transform.getCameraPosition().zoom, time); + break; + + case CameraTransition.PROPERTY_PITCH: + transition.initTime(transform.getCameraPosition().tilt, time); + break; + + case CameraTransition.PROPERTY_BEARING: + transition.initTime(transform.getCameraPosition().bearing, time); + break; + + case CameraTransition.PROPERTY_PADDING: + double[] padding = transform.getCameraPosition().padding; + final Double[] result = new Double[padding.length]; + for (int i = 0; i < padding.length; i++) { + result[i] = Double.valueOf(padding[i]); + } + transition.initTime(result, time); + break; } behavior.animationScheduled(this, transition); diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/PaddingCameraTransition.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/PaddingCameraTransition.java new file mode 100644 index 000000000..2e1cc6fdb --- /dev/null +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/PaddingCameraTransition.java @@ -0,0 +1,28 @@ +package com.mapbox.mapboxsdk.maps; + +import android.view.animation.Interpolator; + +public class PaddingCameraTransition extends CameraTransition<Double[]> { + + public PaddingCameraTransition(int type, double duration, double delay, Double[] endValue, Interpolator interpolator) { + super(type, duration, delay, endValue, interpolator); + } + + @Override + int getCameraProperty() { + return PROPERTY_PADDING; + } + + @Override + Double[] getAnimatedValue(double fraction) { + Double[] startValue = getStartValue(); + Double[] endValue = getEndValue(); + + Double[] value = new Double[4]; + for (int i = 0; i < 4; i++) { + value[i] = startValue[i] + ((endValue[i] - startValue[i]) * fraction); + } + + return value; + } +} diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/PitchCameraTransition.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/PitchCameraTransition.java new file mode 100644 index 000000000..ee478547b --- /dev/null +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/PitchCameraTransition.java @@ -0,0 +1,20 @@ +package com.mapbox.mapboxsdk.maps; + +import android.view.animation.Interpolator; + +public class PitchCameraTransition extends CameraTransition<Double> { + + public PitchCameraTransition(int type, double duration, double delay, Double endValue, Interpolator interpolator) { + super(type, duration, delay, endValue, interpolator); + } + + @Override + int getCameraProperty() { + return PROPERTY_PITCH; + } + + @Override + Double getAnimatedValue(double fraction) { + return getStartValue() + ((getEndValue() - getStartValue()) * fraction); + } +} |