This repository has been archived by the owner on Aug 8, 2023. It is now read-only.
Normalize angle of 360 degrees to 0 degrees #1558
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This fixes the compass not disappearing after it is reset, especially when returning from the background.
When interpolating across 180º,
_normalizeAngle
will return >180º. Then, trying to reset the bearing to 0º would result in interpolation to 360º. Because[MGLMapView updateCompass]
expects bearing to equal 0º when the compass is done resetting, the compass was never disappearing.Steps to reproduce
You can also test this by setting a breakpoint in
/src/mbgl/map/transform.cpp
_normalizeAngle
and doing this:Start by moving to 171º from 196º:
When it comes time to reset to 0º from 189º:
Which is the same as 0º, but not what we're looking for.
/cc @1ec5 @incanus