Fix invalid LngLat with no currently loaded DEM tiles #11339
Merged
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.
Launch Checklist
Closes #10610
When terrain is enabled and the map is quickly zoomed,
map.elevation.visibleDemTiles
occasionally returns an empty array while awaiting DEM tile loading. This previously causedgetBounds
to return null values, As explained here by @ted-piotrowski:This PR adds a fix by defaulting to the 2D
getBounds
behavior if no terrain is available.This leaves undefined behavior in the application, where
getBounds
returns different results depending on whether terrain is loaded or not. It's also likely that if 1+ but not all DEM tiles are loaded, the bounds returned could be insufficient to completely cover all terrain, though this did not nor will they now throw an error.I suspect that these cases are subtle enough to be only a minor issue. If we decide to address this in the future, we should consider the performance cost of delaying
getBounds
calls until terrain is loaded.mapbox-gl-js
changelog:<changelog>Fixed 'getBounds' sometimes returning invalid LngLat when zooming on a map with terrain.</changelog>