diff options
author | Minh Nguyễn <mxn@1ec5.org> | 2016-01-28 16:12:11 -0800 |
---|---|---|
committer | Minh Nguyễn <mxn@1ec5.org> | 2016-01-28 17:57:44 -0800 |
commit | 8cdd02bc8fac9f6bd63b8b943119ebdb6f480ac9 (patch) | |
tree | 72810e8f4419f248dd39cb81a6436a77d74c1ca5 /platform/ios | |
parent | db41391ccbff2f29c4a8871265aa5bba8f1b12cb (diff) | |
download | qtlocation-mapboxgl-8cdd02bc8fac9f6bd63b8b943119ebdb6f480ac9.tar.gz |
[ios] Eliminated “flashlight mode”
Avoid resetting user tracking state when going from location or course tracking mode to heading tracking mode.
Fixes #3710.
Diffstat (limited to 'platform/ios')
-rw-r--r-- | platform/ios/src/MGLMapView.mm | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/platform/ios/src/MGLMapView.mm b/platform/ios/src/MGLMapView.mm index 954fc8a935..2851efecd3 100644 --- a/platform/ios/src/MGLMapView.mm +++ b/platform/ios/src/MGLMapView.mm @@ -3064,14 +3064,15 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration) mode = MGLUserTrackingModeNone; } + MGLUserTrackingMode oldMode = _userTrackingMode; _userTrackingMode = mode; - - self.userTrackingState = animated ? MGLUserTrackingStatePossible : MGLUserTrackingStateChanged; switch (_userTrackingMode) { case MGLUserTrackingModeNone: { + self.userTrackingState = MGLUserTrackingStatePossible; + [self.locationManager stopUpdatingHeading]; // Immediately update the annotation view; other cases update inside @@ -3083,6 +3084,7 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration) case MGLUserTrackingModeFollow: case MGLUserTrackingModeFollowWithCourse: { + self.userTrackingState = animated ? MGLUserTrackingStatePossible : MGLUserTrackingStateChanged; self.showsUserLocation = YES; [self.locationManager stopUpdatingHeading]; @@ -3096,6 +3098,11 @@ mbgl::Duration MGLDurationInSeconds(NSTimeInterval duration) } case MGLUserTrackingModeFollowWithHeading: { + if (oldMode == MGLUserTrackingModeNone) + { + self.userTrackingState = animated ? MGLUserTrackingStatePossible : MGLUserTrackingStateChanged; + } + self.showsUserLocation = YES; if (self.zoomLevel < self.currentMinimumZoom) |