diff options
author | Minh Nguyễn <mxn@1ec5.org> | 2017-02-21 22:47:15 -0800 |
---|---|---|
committer | Minh Nguyễn <mxn@1ec5.org> | 2017-02-21 22:47:15 -0800 |
commit | 2f388d663505255e967597c52656cc076e20d95c (patch) | |
tree | 157ec4c96a5d6f7c67367f96b73957870ee78edb /platform/macos/src | |
parent | b512af6a6682bf133d8d580cccb309f671f287f6 (diff) | |
parent | df6a06bd07bda3207b31d86dd66a7468cc33c440 (diff) | |
download | qtlocation-mapboxgl-2f388d663505255e967597c52656cc076e20d95c.tar.gz |
Merge branch 'release-ios-v3.4.0' into 1ec5-release-ios-v3.4.2
Diffstat (limited to 'platform/macos/src')
-rw-r--r-- | platform/macos/src/MGLMapView.mm | 50 |
1 files changed, 33 insertions, 17 deletions
diff --git a/platform/macos/src/MGLMapView.mm b/platform/macos/src/MGLMapView.mm index 7709632d13..827da35076 100644 --- a/platform/macos/src/MGLMapView.mm +++ b/platform/macos/src/MGLMapView.mm @@ -616,13 +616,14 @@ public: // Default to Streets. if (!styleURL) { - // An access token is required to load any default style, including - // Streets. - if (![MGLAccountManager accessToken]) { - return; - } styleURL = [MGLStyle streetsStyleURLWithVersion:MGLStyleDefaultVersion]; } + + // An access token is required to load any default style, including Streets. + if (![MGLAccountManager accessToken] && [styleURL.scheme isEqualToString:@"mapbox"]) { + NSLog(@"Cannot set the style URL to %@ because no access token has been specified.", styleURL); + return; + } styleURL = styleURL.mgl_URLByStandardizingScheme; self.style = nil; @@ -1143,12 +1144,6 @@ public: } - (void)setCamera:(MGLMapCamera *)camera withDuration:(NSTimeInterval)duration animationTimingFunction:(nullable CAMediaTimingFunction *)function completionHandler:(nullable void (^)(void))completion { - _mbglMap->cancelTransitions(); - if ([self.camera isEqual:camera]) { - return; - } - - mbgl::CameraOptions cameraOptions = [self cameraOptionsObjectForAnimatingToCamera:camera]; mbgl::AnimationOptions animationOptions; if (duration > 0) { animationOptions.duration.emplace(MGLDurationInSecondsFromTimeInterval(duration)); @@ -1164,8 +1159,19 @@ public: }); }; } + + if ([self.camera isEqualToMapCamera:camera]) { + if (completion) { + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(duration * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + completion(); + }); + } + return; + } [self willChangeValueForKey:@"camera"]; + _mbglMap->cancelTransitions(); + mbgl::CameraOptions cameraOptions = [self cameraOptionsObjectForAnimatingToCamera:camera]; _mbglMap->easeTo(cameraOptions, animationOptions); [self didChangeValueForKey:@"camera"]; } @@ -1179,12 +1185,6 @@ public: } - (void)flyToCamera:(MGLMapCamera *)camera withDuration:(NSTimeInterval)duration peakAltitude:(CLLocationDistance)peakAltitude completionHandler:(nullable void (^)(void))completion { - _mbglMap->cancelTransitions(); - if ([self.camera isEqual:camera]) { - return; - } - - mbgl::CameraOptions cameraOptions = [self cameraOptionsObjectForAnimatingToCamera:camera]; mbgl::AnimationOptions animationOptions; if (duration >= 0) { animationOptions.duration = MGLDurationInSecondsFromTimeInterval(duration); @@ -1205,8 +1205,19 @@ public: }); }; } + + if ([self.camera isEqualToMapCamera:camera]) { + if (completion) { + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(duration * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + completion(); + }); + } + return; + } [self willChangeValueForKey:@"camera"]; + _mbglMap->cancelTransitions(); + mbgl::CameraOptions cameraOptions = [self cameraOptionsObjectForAnimatingToCamera:camera]; _mbglMap->flyTo(cameraOptions, animationOptions); [self didChangeValueForKey:@"camera"]; } @@ -1255,6 +1266,11 @@ public: if (animated) { animationOptions.duration = MGLDurationInSecondsFromTimeInterval(MGLAnimationDuration); } + + MGLMapCamera *camera = [self cameraForCameraOptions:cameraOptions]; + if ([self.camera isEqualToMapCamera:camera]) { + return; + } [self willChangeValueForKey:@"visibleCoordinateBounds"]; animationOptions.transitionFinishFn = ^() { |