diff options
author | Jason Wray <jason@mapbox.com> | 2017-08-14 15:27:07 -0400 |
---|---|---|
committer | Jason Wray <jason@mapbox.com> | 2017-09-07 19:23:29 -0400 |
commit | c35b1cd56ba8f4a3d4f195237e025bb24bfa4c43 (patch) | |
tree | 4b60dd1b04fda16bc19fbeee1b638bf2989b2207 /platform/ios/src/MGLFaux3DUserLocationAnnotationView.m | |
parent | 5db97ed96ee1b6d5fa7b4ae6065cf5399ae1e2c0 (diff) | |
download | qtlocation-mapboxgl-c35b1cd56ba8f4a3d4f195237e025bb24bfa4c43.tar.gz |
[ios] Set a heading indicator update threshold
Diffstat (limited to 'platform/ios/src/MGLFaux3DUserLocationAnnotationView.m')
-rw-r--r-- | platform/ios/src/MGLFaux3DUserLocationAnnotationView.m | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/platform/ios/src/MGLFaux3DUserLocationAnnotationView.m b/platform/ios/src/MGLFaux3DUserLocationAnnotationView.m index a04ac8cd28..ee45865b0a 100644 --- a/platform/ios/src/MGLFaux3DUserLocationAnnotationView.m +++ b/platform/ios/src/MGLFaux3DUserLocationAnnotationView.m @@ -231,10 +231,9 @@ _headingIndicatorLayer = [[MGLUserLocationHeadingBeamLayer alloc] initWithUserLocationAnnotationView:self]; //_headingIndicatorLayer = [[MGLUserLocationHeadingArrowLayer alloc] initWithUserLocationAnnotationView:self]; [self.layer insertSublayer:_headingIndicatorLayer below:_dotBorderLayer]; - - _oldHeadingAccuracy = headingAccuracy; } - else if (_oldHeadingAccuracy != headingAccuracy) + + if (_oldHeadingAccuracy != headingAccuracy) { //[_headingIndicatorLayer updateHeadingAccuracy:headingAccuracy]; _oldHeadingAccuracy = headingAccuracy; @@ -242,7 +241,13 @@ if (self.userLocation.heading.trueHeading >= 0) { - _headingIndicatorLayer.affineTransform = CGAffineTransformRotate(CGAffineTransformIdentity, -MGLRadiansFromDegrees(self.mapView.direction - self.userLocation.heading.trueHeading)); + CGFloat rotation = -MGLRadiansFromDegrees(self.mapView.direction - self.userLocation.heading.trueHeading); + + // Don't rotate if the change is imperceptible. + if (fabs(rotation) > MGLUserLocationHeadingUpdateThreshold) + { + _headingIndicatorLayer.affineTransform = CGAffineTransformRotate(CGAffineTransformIdentity, rotation); + } } } else |