diff options
author | Minh Nguyễn <mxn@1ec5.org> | 2016-01-19 23:05:29 -0800 |
---|---|---|
committer | Minh Nguyễn <mxn@1ec5.org> | 2016-01-20 11:02:31 -0800 |
commit | bd4611107ddfe0068afb8f6611deb6cec78c6f73 (patch) | |
tree | f1e09deb2791b5455d7c911dc1714794a6a7034d | |
parent | 5a0042738673d5ed05d9ccc1916d7cd2b28f06f8 (diff) | |
download | qtlocation-mapboxgl-bd4611107ddfe0068afb8f6611deb6cec78c6f73.tar.gz |
[ios] Reset user tracking, respect content inset in resetPosition
-rw-r--r-- | platform/darwin/MGLMapCamera.mm | 2 | ||||
-rw-r--r-- | platform/ios/src/MGLMapView.mm | 13 |
2 files changed, 11 insertions, 4 deletions
diff --git a/platform/darwin/MGLMapCamera.mm b/platform/darwin/MGLMapCamera.mm index 4a62919679..93f3bd45e0 100644 --- a/platform/darwin/MGLMapCamera.mm +++ b/platform/darwin/MGLMapCamera.mm @@ -43,7 +43,7 @@ { return [[self alloc] initWithCenterCoordinate:centerCoordinate altitude:distance - pitch:(CGFloat)pitch + pitch:pitch heading:heading]; } diff --git a/platform/ios/src/MGLMapView.mm b/platform/ios/src/MGLMapView.mm index a728641ab8..a488c0bd49 100644 --- a/platform/ios/src/MGLMapView.mm +++ b/platform/ios/src/MGLMapView.mm @@ -61,6 +61,11 @@ typedef NS_ENUM(NSUInteger, MGLUserTrackingState) { NSString *const MGLMapboxSetupDocumentationURLDisplayString = @"mapbox.com/help/first-steps-ios-sdk"; const NSTimeInterval MGLAnimationDuration = 0.3; + +/// Duration of an animation due to a user location update, typically chosen to +/// match a typical interval between user location updates. +const NSTimeInterval MGLUserLocationAnimationDuration = 1.0; + const CGSize MGLAnnotationUpdateViewportOutset = {150, 150}; const CGFloat MGLMinimumZoom = 3; const NSUInteger MGLTargetFrameInterval = 1; //Target FPS will be 60 divided by this value @@ -1630,8 +1635,9 @@ std::chrono::steady_clock::duration MGLDurationInSeconds(float duration) - (void)resetPosition { - _mbglMap->cancelTransitions(); - _mbglMap->resetPosition(); + MGLMapCamera *camera = [MGLMapCamera camera]; + camera.altitude = MGLAltitudeForZoomLevel(0, 0, 0, self.frame.size); + self.camera = camera; } - (void)cycleDebugOptions @@ -1916,6 +1922,7 @@ std::chrono::steady_clock::duration MGLDurationInSeconds(float duration) - (void)setCamera:(MGLMapCamera *)camera withDuration:(NSTimeInterval)duration animationTimingFunction:(nullable CAMediaTimingFunction *)function completionHandler:(nullable void (^)(void))completion { + self.userTrackingMode = MGLUserTrackingModeNone; _mbglMap->cancelTransitions(); if ([self.camera isEqual:camera]) { @@ -3103,7 +3110,7 @@ std::chrono::steady_clock::duration MGLDurationInSeconds(float duration) edgePadding:insets zoomLevel:self.zoomLevel direction:course - duration:animated ? 1 : 0 + duration:animated ? MGLUserLocationAnimationDuration : 0 animationTimingFunction:linearFunction completionHandler:NULL]; } |