Keep camera steady when switching between viewer modes. #7716
+186
−5
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.
Split from #7626
Required for #6845
What this PR does
Track initial camera view for viewers and return the same view unless the viewer camera has changed.
Previously, the camera view would drift when switching between viewer modes. This is because each time we switch the viewer, we get the current view from leaflet/cesium instance and the value changes slightly each time depending on how the viewer sets the camera. The drift becomes even more noticeable when using custom projections and the extent used with the custom projection is not compatible with the other map modes. This can be a problem when restoring share links and the viewer is first initialized in 3d/cesium mode and then switches to leaflet/2d mode.
This change makes sure that the view remains stable if the camera hasn't changed after setting the initial view.
Test me
Checklist
doc/.