diff options
author | Jason Wray <jason@mapbox.com> | 2017-08-23 16:06:12 -0400 |
---|---|---|
committer | Jason Wray <jason@mapbox.com> | 2017-08-24 12:03:38 -0400 |
commit | b2fd7b680c0bdcb5918424487aba9f083149c123 (patch) | |
tree | 536ecf430236cb33710d3d56061edbd5eff64662 /platform/ios/src | |
parent | acb8199d326eda02102b2d409ebec510053fec1b (diff) | |
download | qtlocation-mapboxgl-b2fd7b680c0bdcb5918424487aba9f083149c123.tar.gz |
[ios] Fix heading update loopupstream/fb-fewer-heading-updates-thx
Updating CLLocationManager.headingOrientation triggers a new heading update, even if there was no actual change in its value.
Diffstat (limited to 'platform/ios/src')
-rw-r--r-- | platform/ios/src/MGLMapView.mm | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/platform/ios/src/MGLMapView.mm b/platform/ios/src/MGLMapView.mm index 715c32186d..18a8d2608a 100644 --- a/platform/ios/src/MGLMapView.mm +++ b/platform/ios/src/MGLMapView.mm @@ -4690,30 +4690,39 @@ public: { // note that right/left device and interface orientations are opposites (see UIApplication.h) // + CLDeviceOrientation orientation; switch ([[UIApplication sharedApplication] statusBarOrientation]) { case (UIInterfaceOrientationLandscapeLeft): { - self.locationManager.headingOrientation = CLDeviceOrientationLandscapeRight; + orientation = CLDeviceOrientationLandscapeRight; break; } case (UIInterfaceOrientationLandscapeRight): { - self.locationManager.headingOrientation = CLDeviceOrientationLandscapeLeft; + orientation = CLDeviceOrientationLandscapeLeft; break; } case (UIInterfaceOrientationPortraitUpsideDown): { - self.locationManager.headingOrientation = CLDeviceOrientationPortraitUpsideDown; + orientation = CLDeviceOrientationPortraitUpsideDown; break; } case (UIInterfaceOrientationPortrait): default: { - self.locationManager.headingOrientation = CLDeviceOrientationPortrait; + orientation = CLDeviceOrientationPortrait; break; } } + + // Setting the location manager's heading orientation causes it to send + // a heading event, which in turn makes us redraw, which kicks off a + // loop... so don't do that. rdar://34059173 + if (self.locationManager.headingOrientation != orientation) + { + self.locationManager.headingOrientation = orientation; + } } } |