summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin R. Miller <incanus@codesorcery.net>2017-01-18 12:43:08 -0800
committerGitHub <noreply@github.com>2017-01-18 12:43:08 -0800
commitf6715694f918a884eda77151aa4fec05521b9536 (patch)
treebd930307db9fb13ad5751324ae57bf858f30aa2a
parentd076ba05673a6ced9d3e641e2c7a2b5f3c70a80f (diff)
downloadqtlocation-mapboxgl-f6715694f918a884eda77151aa4fec05521b9536.tar.gz
refs #6779: mobile & Mac SDK style transition options (#7711)
-rw-r--r--platform/android/CHANGELOG.md1
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java46
-rwxr-xr-xplatform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java24
-rw-r--r--platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/RuntimeStyleActivity.java2
-rw-r--r--platform/android/checkstyle.xml5
-rwxr-xr-xplatform/android/src/jni.cpp46
-rw-r--r--platform/darwin/src/MGLStyle.h16
-rw-r--r--platform/darwin/src/MGLStyle.mm30
-rw-r--r--platform/darwin/src/NSDate+MGLAdditions.h5
-rw-r--r--platform/darwin/src/NSDate+MGLAdditions.mm7
-rw-r--r--platform/ios/CHANGELOG.md1
-rw-r--r--platform/ios/app/MBXViewController.m2
-rw-r--r--platform/ios/src/MGLMapView.mm24
-rw-r--r--platform/macos/CHANGELOG.md1
-rw-r--r--platform/macos/app/MapDocument.m3
-rw-r--r--platform/macos/src/MGLMapView.mm16
16 files changed, 205 insertions, 24 deletions
diff --git a/platform/android/CHANGELOG.md b/platform/android/CHANGELOG.md
index b89e498d21..473ac310ef 100644
--- a/platform/android/CHANGELOG.md
+++ b/platform/android/CHANGELOG.md
@@ -35,6 +35,7 @@ Mapbox welcomes participation and contributions from everyone. If you'd like to
- Extracting all business logic related to annotations into a seperate class cfr. to core and the iOS codebase
* Gesture handling bugs
- Avoid calls to onFling when while pinch zooming [#7666](https://github.com/mapbox/mapbox-gl-native/issues/7666)
+* Support for style-wide transition animation duration and delay [#6779](https://github.com/mapbox/mapbox-gl-native/issues/6779)
## 4.2.1 - December 22, 2016
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 2fa7fc4641..9e8073edb8 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
@@ -166,6 +166,52 @@ public final class MapboxMap {
// Style
+ /**
+ * <p>
+ * Get the animation duration for style changes.
+ * </p>
+ * The default value is zero, so any changes take effect without animation.
+ *
+ * @return Duration in seconds
+ */
+ @UiThread
+ public long getTransitionDuration() {
+ return nativeMapView.getTransitionDuration();
+ }
+
+ /**
+ * Set the animation duration for style changes.
+ *
+ * @param duration Duration in seconds
+ */
+ @UiThread
+ public void setTransitionDuration(long duration) {
+ nativeMapView.setTransitionDuration(duration);
+ }
+
+ /**
+ * <p>
+ * Get the animation delay for style changes.
+ * </p>
+ * The default value is zero, so any changes begin to animate immediately.
+ *
+ * @return Delay in seconds
+ */
+ @UiThread
+ public long getTransitionDelay() {
+ return nativeMapView.getTransitionDelay();
+ }
+
+ /**
+ * Set the animation delay for style changes.
+ *
+ * @param delay Delay in seconds
+ */
+ @UiThread
+ public void setTransitionDelay(long delay) {
+ nativeMapView.setTransitionDelay(delay);
+ }
+
@Nullable
@UiThread
public Layer getLayer(@NonNull String layerId) {
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java
index 05d1bf1750..0c15480dee 100755
--- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java
+++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/NativeMapView.java
@@ -767,6 +767,22 @@ final class NativeMapView {
// Runtime style Api
+ public long getTransitionDuration() {
+ return nativeGetTransitionDuration(nativeMapViewPtr);
+ }
+
+ public void setTransitionDuration(long duration) {
+ nativeSetTransitionDuration(nativeMapViewPtr, duration);
+ }
+
+ public long getTransitionDelay() {
+ return nativeGetTransitionDelay(nativeMapViewPtr);
+ }
+
+ public void setTransitionDelay(long delay) {
+ nativeSetTransitionDelay(nativeMapViewPtr, delay);
+ }
+
public Layer getLayer(String layerId) {
if (isDestroyedOn("getLayer")) {
return null;
@@ -1098,6 +1114,14 @@ final class NativeMapView {
private native double[] nativeGetCameraValues(long nativeMapViewPtr);
+ private native long nativeGetTransitionDuration(long nativeMapViewPtr);
+
+ private native void nativeSetTransitionDuration(long nativeMapViewPtr, long duration);
+
+ private native long nativeGetTransitionDelay(long nativeMapViewPtr);
+
+ private native void nativeSetTransitionDelay(long nativeMapViewPtr, long delay);
+
private native Layer nativeGetLayer(long nativeMapViewPtr, String layerId);
private native void nativeAddLayer(long nativeMapViewPtr, long layerPtr, String before);
diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/RuntimeStyleActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/RuntimeStyleActivity.java
index 2ac3a6fb00..983f82c53a 100644
--- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/RuntimeStyleActivity.java
+++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/RuntimeStyleActivity.java
@@ -239,6 +239,8 @@ public class RuntimeStyleActivity extends AppCompatActivity {
private void setWaterColor() {
Layer water = mapboxMap.getLayer("water");
if (water != null) {
+ mapboxMap.setTransitionDuration(5);
+ mapboxMap.setTransitionDelay(1);
water.setProperties(
visibility(VISIBLE),
fillColor(Color.RED)
diff --git a/platform/android/checkstyle.xml b/platform/android/checkstyle.xml
index 6a429858a6..3449036e99 100644
--- a/platform/android/checkstyle.xml
+++ b/platform/android/checkstyle.xml
@@ -19,7 +19,10 @@
<!-- <module name="NewlineAtEndOfFile">
<property name="lineSeparator" value="lf" />
</module> -->
- <module name="FileLength"/>
+ <module name="FileLength">
+ <property name="max" value="2042"/>
+ </module>
+
<module name="FileTabCharacter"/>
<!-- Trailing spaces -->
diff --git a/platform/android/src/jni.cpp b/platform/android/src/jni.cpp
index 5182e268f3..1ef7fec8fb 100755
--- a/platform/android/src/jni.cpp
+++ b/platform/android/src/jni.cpp
@@ -1082,6 +1082,48 @@ void nativeFlyTo(JNIEnv *env, jni::jobject* obj, jlong nativeMapViewPtr, jdouble
nativeMapView->getMap().flyTo(cameraOptions, animationOptions);
}
+jlong nativeGetTransitionDuration(JNIEnv *env, jni::jobject* obj, jlong nativeMapViewPtr) {
+ assert(env);
+ assert(nativeMapViewPtr != 0);
+
+ NativeMapView *nativeMapView = reinterpret_cast<NativeMapView *>(nativeMapViewPtr);
+
+ const auto transitionOptions = nativeMapView->getMap().getTransitionOptions();
+ return transitionOptions.duration.value_or(mbgl::Duration::zero()).count();
+}
+
+void nativeSetTransitionDuration(JNIEnv *env, jni::jobject* obj, jlong nativeMapViewPtr, jlong duration) {
+ assert(env);
+ assert(nativeMapViewPtr != 0);
+
+ NativeMapView *nativeMapView = reinterpret_cast<NativeMapView *>(nativeMapViewPtr);
+
+ auto transitionOptions = nativeMapView->getMap().getTransitionOptions();
+ transitionOptions.duration = std::chrono::duration_cast<mbgl::Duration>(std::chrono::duration<jlong>(duration));
+ nativeMapView->getMap().setTransitionOptions(transitionOptions);
+}
+
+jlong nativeGetTransitionDelay(JNIEnv *env, jni::jobject* obj, jlong nativeMapViewPtr) {
+ assert(env);
+ assert(nativeMapViewPtr != 0);
+
+ NativeMapView *nativeMapView = reinterpret_cast<NativeMapView *>(nativeMapViewPtr);
+
+ const auto transitionOptions = nativeMapView->getMap().getTransitionOptions();
+ return transitionOptions.delay.value_or(mbgl::Duration::zero()).count();
+}
+
+void nativeSetTransitionDelay(JNIEnv *env, jni::jobject* obj, jlong nativeMapViewPtr, jlong delay) {
+ assert(env);
+ assert(nativeMapViewPtr != 0);
+
+ NativeMapView *nativeMapView = reinterpret_cast<NativeMapView *>(nativeMapViewPtr);
+
+ auto transitionOptions = nativeMapView->getMap().getTransitionOptions();
+ transitionOptions.delay = std::chrono::duration_cast<mbgl::Duration>(std::chrono::duration<jlong>(delay));
+ nativeMapView->getMap().setTransitionOptions(transitionOptions);
+}
+
jni::jobject* nativeGetLayer(JNIEnv *env, jni::jobject* obj, jlong nativeMapViewPtr, jni::jstring* layerId) {
assert(env);
assert(nativeMapViewPtr != 0);
@@ -1876,6 +1918,10 @@ void registerNatives(JavaVM *vm) {
MAKE_NATIVE_METHOD(nativeJumpTo, "(JDDDDD)V"),
MAKE_NATIVE_METHOD(nativeEaseTo, "(JDDDJDDZ)V"),
MAKE_NATIVE_METHOD(nativeFlyTo, "(JDDDJDD)V"),
+ MAKE_NATIVE_METHOD(nativeGetTransitionDuration, "(J)J"),
+ MAKE_NATIVE_METHOD(nativeSetTransitionDuration, "(JJ)V"),
+ MAKE_NATIVE_METHOD(nativeGetTransitionDelay, "(J)J"),
+ MAKE_NATIVE_METHOD(nativeSetTransitionDelay, "(JJ)V"),
MAKE_NATIVE_METHOD(nativeGetLayer, "(JLjava/lang/String;)Lcom/mapbox/mapboxsdk/style/layers/Layer;"),
MAKE_NATIVE_METHOD(nativeAddLayer, "(JJLjava/lang/String;)V"),
MAKE_NATIVE_METHOD(nativeRemoveLayerById, "(JLjava/lang/String;)V"),
diff --git a/platform/darwin/src/MGLStyle.h b/platform/darwin/src/MGLStyle.h
index 9bd35142c2..25096748f6 100644
--- a/platform/darwin/src/MGLStyle.h
+++ b/platform/darwin/src/MGLStyle.h
@@ -442,6 +442,22 @@ MGL_EXPORT
*/
- (void)removeImageForName:(NSString *)name;
+#pragma mark Managing a Style’s Transition Options
+
+/**
+ The duration in seconds to animate any changes to the style URL or to layout and paint attributes.
+
+ By default, this property is set to zero seconds, so any changes take effect without animation.
+ */
+@property (nonatomic) NSTimeInterval transitionDuration;
+
+/**
+ The delay in seconds to before applying any changes to the style URL or to layout and paint attributes.
+
+ By default, this property is set to zero seconds, so any changes begin to animate immediately.
+ */
+@property (nonatomic) NSTimeInterval transitionDelay;
+
@end
NS_ASSUME_NONNULL_END
diff --git a/platform/darwin/src/MGLStyle.mm b/platform/darwin/src/MGLStyle.mm
index 7e96c08ccc..78c719050c 100644
--- a/platform/darwin/src/MGLStyle.mm
+++ b/platform/darwin/src/MGLStyle.mm
@@ -502,7 +502,7 @@ static NSURL *MGLStyleURL_emerald;
newAppliedClasses.push_back([appliedClass UTF8String]);
}
- mbgl::style::TransitionOptions transition { { MGLDurationInSeconds(transitionDuration) } };
+ mbgl::style::TransitionOptions transition { { MGLDurationInSecondsFromTimeInterval(transitionDuration) } };
self.mapView.mbglMap->setTransitionOptions(transition);
self.mapView.mbglMap->setClasses(newAppliedClasses);
}
@@ -570,6 +570,34 @@ static NSURL *MGLStyleURL_emerald;
return spriteImage ? [[MGLImage alloc] initWithMGLSpriteImage:spriteImage] : nil;
}
+#pragma mark Style transitions
+
+- (void)setTransitionDuration:(NSTimeInterval)duration
+{
+ auto transitionOptions = self.mapView.mbglMap->getTransitionOptions();
+ transitionOptions.duration = MGLDurationInSecondsFromTimeInterval(duration);
+ self.mapView.mbglMap->setTransitionOptions(transitionOptions);
+}
+
+- (NSTimeInterval)transitionDuration
+{
+ const mbgl::style::TransitionOptions transitionOptions = self.mapView.mbglMap->getTransitionOptions();
+ return MGLTimeIntervalFromDurationInSeconds(transitionOptions.duration.value_or(mbgl::Duration::zero()));
+}
+
+- (void)setTransitionDelay:(NSTimeInterval)delay
+{
+ auto transitionOptions = self.mapView.mbglMap->getTransitionOptions();
+ transitionOptions.delay = MGLDurationInSecondsFromTimeInterval(delay);
+ self.mapView.mbglMap->setTransitionOptions(transitionOptions);
+}
+
+- (NSTimeInterval)transitionDelay
+{
+ const mbgl::style::TransitionOptions transitionOptions = self.mapView.mbglMap->getTransitionOptions();
+ return MGLTimeIntervalFromDurationInSeconds(transitionOptions.delay.value_or(mbgl::Duration::zero()));
+}
+
- (NSString *)description
{
return [NSString stringWithFormat:@"<%@: %p; name = %@, URL = %@>",
diff --git a/platform/darwin/src/NSDate+MGLAdditions.h b/platform/darwin/src/NSDate+MGLAdditions.h
index 918aae233f..820d1bd9e2 100644
--- a/platform/darwin/src/NSDate+MGLAdditions.h
+++ b/platform/darwin/src/NSDate+MGLAdditions.h
@@ -5,6 +5,9 @@
@interface NSDate (MGLAdditions)
/// Converts from a duration in seconds to a duration object usable in mbgl.
-mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration);
+mbgl::Duration MGLDurationInSecondsFromTimeInterval(NSTimeInterval duration);
+
+/// Converts from an mbgl duration object to a duration in seconds.
+NSTimeInterval MGLTimeIntervalFromDurationInSeconds(mbgl::Duration duration);
@end
diff --git a/platform/darwin/src/NSDate+MGLAdditions.mm b/platform/darwin/src/NSDate+MGLAdditions.mm
index 75072ad7ff..deac3c4881 100644
--- a/platform/darwin/src/NSDate+MGLAdditions.mm
+++ b/platform/darwin/src/NSDate+MGLAdditions.mm
@@ -2,9 +2,14 @@
@implementation NSDate (MGLAdditions)
-mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration)
+mbgl::Duration MGLDurationInSecondsFromTimeInterval(NSTimeInterval duration)
{
return std::chrono::duration_cast<mbgl::Duration>(std::chrono::duration<NSTimeInterval>(duration));
}
+NSTimeInterval MGLTimeIntervalFromDurationInSeconds(mbgl::Duration duration)
+{
+ return duration.count();
+}
+
@end
diff --git a/platform/ios/CHANGELOG.md b/platform/ios/CHANGELOG.md
index 00fdf9f2c1..86d96750d7 100644
--- a/platform/ios/CHANGELOG.md
+++ b/platform/ios/CHANGELOG.md
@@ -8,6 +8,7 @@ Mapbox welcomes participation and contributions from everyone. Please read [CONT
* Improved the line wrapping behavior of point-placed labels written in Chinese, Japanese, and Yi. ([#6828](https://github.com/mapbox/mapbox-gl-native/pull/6828))
* Fixed an issue where translucent, non-view-backed point annotations along tile boundaries would be drawn darker than expected. ([#6832](https://github.com/mapbox/mapbox-gl-native/pull/6832))
* Added a Simplified Chinese localization. ([#7316](https://github.com/mapbox/mapbox-gl-native/pull/7316))
+* Support for style-wide transition animation duration and delay. [#6779](https://github.com/mapbox/mapbox-gl-native/issues/6779)
## 3.4.0
diff --git a/platform/ios/app/MBXViewController.m b/platform/ios/app/MBXViewController.m
index a14ad9350f..63cde71f27 100644
--- a/platform/ios/app/MBXViewController.m
+++ b/platform/ios/app/MBXViewController.m
@@ -819,6 +819,8 @@ typedef NS_ENUM(NSInteger, MBXSettingsMiscellaneousRows) {
- (void)styleBuildingLayer
{
+ self.mapView.style.transitionDuration = 5;
+ self.mapView.style.transitionDelay = 1;
MGLFillStyleLayer *buildingLayer = (MGLFillStyleLayer *)[self.mapView.style layerWithIdentifier:@"building"];
buildingLayer.fillColor = [MGLStyleValue<UIColor *> valueWithRawValue:[UIColor blackColor]];
}
diff --git a/platform/ios/src/MGLMapView.mm b/platform/ios/src/MGLMapView.mm
index c211d4419b..e6ebd4492f 100644
--- a/platform/ios/src/MGLMapView.mm
+++ b/platform/ios/src/MGLMapView.mm
@@ -1226,7 +1226,7 @@ public:
if (drift)
{
CGPoint offset = CGPointMake(velocity.x * self.decelerationRate / 4, velocity.y * self.decelerationRate / 4);
- _mbglMap->moveBy({ offset.x, offset.y }, MGLDurationInSeconds(self.decelerationRate));
+ _mbglMap->moveBy({ offset.x, offset.y }, MGLDurationInSecondsFromTimeInterval(self.decelerationRate));
}
[self notifyGestureDidEndWithDrift:drift];
@@ -1316,7 +1316,7 @@ public:
if (velocity && duration)
{
- _mbglMap->setScale(newScale, mbgl::ScreenCoordinate { centerPoint.x, centerPoint.y }, MGLDurationInSeconds(duration));
+ _mbglMap->setScale(newScale, mbgl::ScreenCoordinate { centerPoint.x, centerPoint.y }, MGLDurationInSecondsFromTimeInterval(duration));
}
[self notifyGestureDidEndWithDrift:velocity && duration];
@@ -1375,7 +1375,7 @@ public:
CGFloat newRadians = radians + velocity * decelerationRate * 0.1;
CGFloat newDegrees = MGLDegreesFromRadians(newRadians) * -1;
- _mbglMap->setBearing(newDegrees, mbgl::ScreenCoordinate { centerPoint.x, centerPoint.y }, MGLDurationInSeconds(decelerationRate));
+ _mbglMap->setBearing(newDegrees, mbgl::ScreenCoordinate { centerPoint.x, centerPoint.y }, MGLDurationInSecondsFromTimeInterval(decelerationRate));
[self notifyGestureDidEndWithDrift:YES];
@@ -1504,7 +1504,7 @@ public:
CGPoint gesturePoint = [self anchorPointForGesture:doubleTap];
mbgl::ScreenCoordinate center(gesturePoint.x, gesturePoint.y);
- _mbglMap->scaleBy(2, center, MGLDurationInSeconds(MGLAnimationDuration));
+ _mbglMap->scaleBy(2, center, MGLDurationInSecondsFromTimeInterval(MGLAnimationDuration));
__weak MGLMapView *weakSelf = self;
@@ -1532,7 +1532,7 @@ public:
CGPoint gesturePoint = [self anchorPointForGesture:twoFingerTap];
mbgl::ScreenCoordinate center(gesturePoint.x, gesturePoint.y);
- _mbglMap->scaleBy(0.5, center, MGLDurationInSeconds(MGLAnimationDuration));
+ _mbglMap->scaleBy(0.5, center, MGLDurationInSecondsFromTimeInterval(MGLAnimationDuration));
__weak MGLMapView *weakSelf = self;
@@ -2288,7 +2288,7 @@ public:
mbgl::AnimationOptions animationOptions;
if (duration)
{
- animationOptions.duration.emplace(MGLDurationInSeconds(duration));
+ animationOptions.duration.emplace(MGLDurationInSecondsFromTimeInterval(duration));
animationOptions.easing.emplace(MGLUnitBezierForMediaTimingFunction(function));
}
if (completion)
@@ -2329,7 +2329,7 @@ public:
_mbglMap->setZoom(zoomLevel,
MGLEdgeInsetsFromNSEdgeInsets(self.contentInset),
- MGLDurationInSeconds(duration));
+ MGLDurationInSecondsFromTimeInterval(duration));
}
- (void)setMinimumZoomLevel:(double)minimumZoomLevel
@@ -2441,7 +2441,7 @@ public:
mbgl::AnimationOptions animationOptions;
if (duration > 0)
{
- animationOptions.duration.emplace(MGLDurationInSeconds(duration));
+ animationOptions.duration.emplace(MGLDurationInSecondsFromTimeInterval(duration));
animationOptions.easing.emplace(MGLUnitBezierForMediaTimingFunction(function));
}
if (completion)
@@ -2489,13 +2489,13 @@ public:
{
_mbglMap->setBearing(direction,
MGLEdgeInsetsFromNSEdgeInsets(self.contentInset),
- MGLDurationInSeconds(duration));
+ MGLDurationInSecondsFromTimeInterval(duration));
}
else
{
CGPoint centerPoint = self.userLocationAnnotationViewCenter;
_mbglMap->setBearing(direction, mbgl::ScreenCoordinate { centerPoint.x, centerPoint.y },
- MGLDurationInSeconds(duration));
+ MGLDurationInSecondsFromTimeInterval(duration));
}
}
@@ -2548,7 +2548,7 @@ public:
mbgl::AnimationOptions animationOptions;
if (duration > 0)
{
- animationOptions.duration.emplace(MGLDurationInSeconds(duration));
+ animationOptions.duration.emplace(MGLDurationInSecondsFromTimeInterval(duration));
animationOptions.easing.emplace(MGLUnitBezierForMediaTimingFunction(function));
}
if (completion)
@@ -2594,7 +2594,7 @@ public:
mbgl::AnimationOptions animationOptions;
if (duration >= 0)
{
- animationOptions.duration = MGLDurationInSeconds(duration);
+ animationOptions.duration = MGLDurationInSecondsFromTimeInterval(duration);
}
if (peakAltitude >= 0)
{
diff --git a/platform/macos/CHANGELOG.md b/platform/macos/CHANGELOG.md
index fe1a316fab..67fdbedad8 100644
--- a/platform/macos/CHANGELOG.md
+++ b/platform/macos/CHANGELOG.md
@@ -6,6 +6,7 @@
* Improved the line wrapping behavior of point-placed labels written in Chinese, Japanese, and Yi. ([#6828](https://github.com/mapbox/mapbox-gl-native/pull/6828))
* Fixed an issue where translucent point annotations along tile boundaries would be drawn darker than expected. ([#6832](https://github.com/mapbox/mapbox-gl-native/pull/6832))
* Added a Simplified Chinese localization. ([#7316](https://github.com/mapbox/mapbox-gl-native/pull/7316), [#7503](https://github.com/mapbox/mapbox-gl-native/pull/7503))
+* Support for style-wide transition animation duration and delay. [#6779](https://github.com/mapbox/mapbox-gl-native/issues/6779)
## 0.3.0
diff --git a/platform/macos/app/MapDocument.m b/platform/macos/app/MapDocument.m
index 64833a8560..40fd9e4600 100644
--- a/platform/macos/app/MapDocument.m
+++ b/platform/macos/app/MapDocument.m
@@ -683,6 +683,9 @@ NS_ARRAY_OF(id <MGLAnnotation>) *MBXFlattenedShapes(NS_ARRAY_OF(id <MGLAnnotatio
}
- (IBAction)manipulateStyle:(id)sender {
+ self.mapView.style.transitionDuration = 5;
+ self.mapView.style.transitionDelay = 1;
+
MGLFillStyleLayer *fillStyleLayer = (MGLFillStyleLayer *)[self.mapView.style layerWithIdentifier:@"water"];
MGLStyleValue *colorFunction = [MGLStyleValue<NSColor *> valueWithStops:@{
diff --git a/platform/macos/src/MGLMapView.mm b/platform/macos/src/MGLMapView.mm
index 0db059dcf2..e9d8fc5f45 100644
--- a/platform/macos/src/MGLMapView.mm
+++ b/platform/macos/src/MGLMapView.mm
@@ -979,7 +979,7 @@ public:
[self willChangeValueForKey:@"centerCoordinate"];
_mbglMap->setLatLng(MGLLatLngFromLocationCoordinate2D(centerCoordinate),
MGLEdgeInsetsFromNSEdgeInsets(self.contentInsets),
- MGLDurationInSeconds(animated ? MGLAnimationDuration : 0));
+ MGLDurationInSecondsFromTimeInterval(animated ? MGLAnimationDuration : 0));
[self didChangeValueForKey:@"centerCoordinate"];
}
@@ -987,7 +987,7 @@ public:
[self willChangeValueForKey:@"centerCoordinate"];
_mbglMap->cancelTransitions();
_mbglMap->moveBy({ delta.x, delta.y },
- MGLDurationInSeconds(animated ? MGLAnimationDuration : 0));
+ MGLDurationInSecondsFromTimeInterval(animated ? MGLAnimationDuration : 0));
[self didChangeValueForKey:@"centerCoordinate"];
}
@@ -1023,7 +1023,7 @@ public:
[self willChangeValueForKey:@"zoomLevel"];
_mbglMap->setZoom(zoomLevel,
MGLEdgeInsetsFromNSEdgeInsets(self.contentInsets),
- MGLDurationInSeconds(animated ? MGLAnimationDuration : 0));
+ MGLDurationInSecondsFromTimeInterval(animated ? MGLAnimationDuration : 0));
[self didChangeValueForKey:@"zoomLevel"];
}
@@ -1035,7 +1035,7 @@ public:
[self willChangeValueForKey:@"centerCoordinate"];
[self willChangeValueForKey:@"zoomLevel"];
mbgl::ScreenCoordinate center(point.x, self.bounds.size.height - point.y);
- _mbglMap->scaleBy(scaleFactor, center, MGLDurationInSeconds(animated ? MGLAnimationDuration : 0));
+ _mbglMap->scaleBy(scaleFactor, center, MGLDurationInSecondsFromTimeInterval(animated ? MGLAnimationDuration : 0));
[self didChangeValueForKey:@"zoomLevel"];
[self didChangeValueForKey:@"centerCoordinate"];
}
@@ -1092,7 +1092,7 @@ public:
[self willChangeValueForKey:@"direction"];
_mbglMap->setBearing(direction,
MGLEdgeInsetsFromNSEdgeInsets(self.contentInsets),
- MGLDurationInSeconds(animated ? MGLAnimationDuration : 0));
+ MGLDurationInSecondsFromTimeInterval(animated ? MGLAnimationDuration : 0));
[self didChangeValueForKey:@"direction"];
}
@@ -1126,7 +1126,7 @@ public:
mbgl::CameraOptions cameraOptions = [self cameraOptionsObjectForAnimatingToCamera:camera];
mbgl::AnimationOptions animationOptions;
if (duration > 0) {
- animationOptions.duration.emplace(MGLDurationInSeconds(duration));
+ animationOptions.duration.emplace(MGLDurationInSecondsFromTimeInterval(duration));
animationOptions.easing.emplace(MGLUnitBezierForMediaTimingFunction(function));
}
if (completion) {
@@ -1162,7 +1162,7 @@ public:
mbgl::CameraOptions cameraOptions = [self cameraOptionsObjectForAnimatingToCamera:camera];
mbgl::AnimationOptions animationOptions;
if (duration >= 0) {
- animationOptions.duration = MGLDurationInSeconds(duration);
+ animationOptions.duration = MGLDurationInSecondsFromTimeInterval(duration);
}
if (peakAltitude >= 0) {
CLLocationDegrees peakLatitude = (self.centerCoordinate.latitude + camera.centerCoordinate.latitude) / 2;
@@ -1228,7 +1228,7 @@ public:
mbgl::CameraOptions cameraOptions = _mbglMap->cameraForLatLngBounds(MGLLatLngBoundsFromCoordinateBounds(bounds), padding);
mbgl::AnimationOptions animationOptions;
if (animated) {
- animationOptions.duration = MGLDurationInSeconds(MGLAnimationDuration);
+ animationOptions.duration = MGLDurationInSecondsFromTimeInterval(MGLAnimationDuration);
}
[self willChangeValueForKey:@"visibleCoordinateBounds"];