summaryrefslogtreecommitdiff
path: root/platform
diff options
context:
space:
mode:
authorMinh Nguyễn <mxn@1ec5.org>2016-01-28 16:12:11 -0800
committerMinh Nguyễn <mxn@1ec5.org>2016-01-28 17:57:44 -0800
commit8cdd02bc8fac9f6bd63b8b943119ebdb6f480ac9 (patch)
tree72810e8f4419f248dd39cb81a6436a77d74c1ca5 /platform
parentdb41391ccbff2f29c4a8871265aa5bba8f1b12cb (diff)
downloadqtlocation-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')
-rw-r--r--platform/ios/src/MGLMapView.mm11
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)