Publish release 4.0.0#924
Conversation
This is a squash of the history of the 4.0.0 release. - Updated to AGP 9.2.1 and Kotlin 2.4.0 - Added KMP library version - Added web bindings - Added support for CRS specification in vector layer styles - Support added for rotated icons in IconLayer - Added configuration options for animated dashed lines in vector layer styles - Added support for circles for point features in the tiled vector layer - Moved to GPU tessellation for Android and iOS - Extended the MapCamera3d modes with additional modes and options for custom view/projection matrices - Experimental: Added a displaced raster layer for utilizing elevation-data and raster tile pyramids to display 3D-displaced terrain - Numerous fixes and performance improvements Co-authored-by: Bastian Morath <morath@ubique.ch> Co-authored-by: Christoph Maurhofer <maurhofer@ubique.ch> Co-authored-by: Daniel Sparber Co-authored-by: <sparber@ubique.ch> Co-authored-by: Jeremias Jutz <jutz.jeremias@gmail.com> Co-authored-by: Marco Zimmermann <zimmermann@ubique.ch> Co-authored-by: Matthias Felix <felix-github@ubique.ch> Co-authored-by: Matthias Frei <frei@ubique.ch> Co-authored-by: Mike Wong <wong@ubique.ch> Co-authored-by: Nicolas Märki <maerki@ubique.ch> Co-authored-by: Noah Bussinger <bussinger@ubique.ch> Co-authored-by: Remo Dietlicher <dietlicher@ubique.ch> Co-authored-by: Stefan Mitterrutzner <mitterrutzner@ubique.ch>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: f664747dba
ℹ️ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
|
|
||
| Tiled2dMapZoomLevelInfo prevZoom = zoomLevelInfos.back(); | ||
|
|
||
| for (auto it = zoomLevelInfos.begin() + minZoomLevel; it != zoomLevelInfos.end() + maxZoomLevel; ++it) { |
There was a problem hiding this comment.
Stop iterating past irregular zoom levels
For irregular configs such as EPSG2056/EPSG21781, when zoomIdentifier is at or above the last configured level, this loop uses zoomLevelInfos.end() + maxZoomLevel as its sentinel. That is far past the one-past-end iterator, so the loop continues after reaching end() and dereferences an invalid iterator, causing undefined behavior/crashes or bogus zoom factors. Stop at the valid end of the selected level range instead.
Useful? React with 👍 / 👎.
| underzoom, | ||
| overzoom, | ||
| levels, | ||
| coordinateReferenceSystem, |
There was a problem hiding this comment.
Preserve CRS from raster TileJSON URLs
When a raster source is specified via url, coordinateReferenceSystem is only filled from the outer source before the TileJSON is loaded. TileJSONs that carry CRS in metadata.crs now reach this constructor as nullopt, so getLayerConfig treats EPSG:2056/21781 raster sources as EPSG:3857 and requests/renders the wrong tiles. Parse the loaded TileJSON metadata before constructing the raster source.
Useful? React with 👍 / 👎.
This is a squash of the history of the 4.0.0 release.