Releases: maplibre/maplibre-gl-js
Releases · maplibre/maplibre-gl-js
Release list
v5.20.0
Immutable
release. Only release title and notes can be modified.
✨ Features and improvements
- Add Etag unmodified support to optimize vector tile reloading (#7074) (by @rivkamatan and @wayofthefuture)
- Add
boxZoom.boxZoomEndoption to customize the action after Shift-drag box selection (#6397) (by @itisyb) - Implement
resamplingpaint property for raster, hillshade, and color-relief layers (#7074) (by @larsmaxfield) - Add updateable support for GeoJSON-VT (#7172) (by @wayofthefuture and @HarelM)
- Add example for 3D Tiles using three.js (#7198) (by @hh-hang)
🐞 Bug fixes
v5.19.0
Immutable
release. Only release title and notes can be modified.
✨ Features and improvements
- Change the return type of
LngLatBounds.toArray()to use a more precise type (#7156) (by @n4n5) - Add
anisotropicFilterPitchmap option to set the pitch above which the anisotropic filter is applied to all raster layers, the default of which is 20° (#7134) (by larsmaxfield) - Add source id to error message (#7107) (by HarelM)
🐞 Bug fixes
- Fix SDF
icon-text-fitrendering by correctly unpacking packed shader values insymbol_sdf.vertex.glsl, with render-test coverage (#7141, fixes #6953) (by @pcardinal) - Fix correct bounds calculation for GeoJSON with elevation (#6963) (by @simonmnt)
- Fix: support elevation in bounds calculation (#7135) (by simonmnt)
- Fix Firefox "Alpha-premult deprecated for non-DOM uploads" warning (#7128) (by @birkskyum)
- Fix raster tiles rendering with glyph/icon atlas content after WebGL context loss (#7126) (by @birkskyum)
- Fix popup tip in RTL pages (#7157) (by @HarelM)
v5.18.0
Immutable
release. Only release title and notes can be modified.
✨ Features and improvements
- Add support for click events on Marker (#7028) (by @ganesh8068)
- Simplify and abstract the GeoJSON Worker (#7058) (by @wayofthefuture)
- Add
pseudooption toFullscreenControlto force CSS-based fullscreen mode instead of native fullscreen API. Users might want this because this is faster on some devices (#7076) (by @CommanderStorm) - Migrate our API docs to zensical (#7071) (by CommanderStorm)
🐞 Bug fixes
- Fix WebGL context loss error when style is not yet loaded (#7094) (by @kaigritun)
- Fix updating terrain tiles on feature state changes (#6231) (by @pstaszek)
- Fix LngLatBounds.intersects for zero-width bounds (#7055) (by @lucaswoj)
- Fix
GlobeControlnot updating whenMap.setProjection()is called programmatically (#7005, #7075) (by @CommanderStorm) - Fix
map.getProjection()returningundefinedafter callingmap.setProjection()with the default"mercator"projection (#7072) - Fix incorrect text placement along line in 3D mode (#7039) (by @russellporter)
- When the
prefers-reduced-motionmedia query is active, we now no longer display the pulsing GeoLocation animation (#7066) (by @CommanderStorm)
v5.17.0
Immutable
release. Only release title and notes can be modified.
✨ Features and improvements
- Refactor _updateWorkerData (#6983) (by @wayofthefuture)
⚠️ AddzoomSnapoption toMapto allow snapping zoom levels to a grid when zooming in and out; aligns the behavior across all UI patterns (keyboard, scroll wheel, on-screen zoom buttons, double-click, double-tap). Previously, pressing +/- on the keyboard zoomed to rounded whole integers, more or less than 1 zoom level when starting from a fractional zoom. Now any number can be specified forzoomSnap; a value of 1.0 produces the rounded whole integer behavior across all UI patterns. (#6941) (by @mizmay)- Add support for container elements from different windows (e.g., popup or iframe) (#6969) (by @Syncret)
- Migrate to @maplibre/geojson-vt (#6995) (by @HarelM)
🐞 Bug fixes
v5.16.0
Immutable
release. Only release title and notes can be modified.
✨ Features and improvements
- Add
paddingoption toPopupclass to prevent popups from being positioned too close to map container edges (#5978) (by @yuiseki and @lucaswoj) - Emit
style.loadevent on style diff (#6880) (by lesbaa)
🐞 Bug fixes
- Fix setting visibility on custom layer (#6883) (by melitele)
- Hide leading and trailing control characters in
formatexpressions (#6907) (by 1ec5) - Fix image sources being clipped at -180 and 180 longitude when terrain is enabled (#4088) (by pstaszek)
- Fix map not immediately constraining to a valid zoom and center when changing projections (#6892) (by larsmaxfield)
- Fix a blank map when a resize event is triggered before a WebGL context restoration (#6935) (by ToHold)
- Diffed changes when json is passed to
setStyleemit a style.load event. (#2587, #4757) (by @lesbaa) - Fix a precision issue in the atomsphere shader in globe projection. (#6916) (by tavimori)
v5.15.0
Immutable
release. Only release title and notes can be modified.
✨ Features and improvements
- Support global state expression for layer visibility (#6659) (by melitele)
- Update Node.js version to 24.11 for development (#6851) (by HarelM)
🐞 Bug fixes
- Fix
LngLatBounds#intersectsreturningfalsefor bounds spanning 360° or more (#6863) (by @lucaswoj) - Fix getting the right zoom for getElevationForLngLat (#6825) (by @HarelM)
- Fix stale transform state being applied after changing
minZoomormaxZoomdue to old copies fromtransformCameraUpdatetaking precedence.transformCameraUpdateis now called fromsetMinZoomandsetMaxZoomto allow user to control subsequent changes tozoom#6766 (by @Auspicus) - Fix GeoJSON source throwing with undefined properties #6730 (by @wayofthefuture)
v5.14.0
Immutable
release. Only release title and notes can be modified.
https://github.com/maplibre/maplibre-gl-js
Changes since MapLibre GL JS v5.13.0:
✨ Features and improvements
- Prevent redundant DEM border backfilling by tracking state, moved tile manager logic to helper files (#6756) (by @HarelM)
- Improve performance of GeoJSON
updateData,setData, and overzoomed tiles (#6738, #6772) (by @lucaswoj)
🐞 Bug fixes
- Handle consecutive duplicate points in offsetLine to avoid null values in the output. Fixes #5431 (by mmc1718)
⚠️ Gracefully handle internal AbortErrors (e.g., when a TileJSON URL is updated while a request in flight). Previously, such aborted requests would throw an AbortError in an unhandled rejection that was not easily caught in user code. Since aborted requests are fully handled internally, these unhandled rejections were superfluous and resulted in unhelpful client errors. (#6747) (by @andrewda)- Fix canvas sources with power-of-2 dimensions rendering as black squares (#6607) (by Omkarthipparthi)
- Fix
queryTerrainElevationto use higher zoom level tiles when possible (#6791) (by @HarelM) - Fix unwanted movement when moving a pitched terrain map at high latitudes; fix freezes when moving a pitched and rotated terrain map at low zoom (#6775) (by @larsmaxfield)
- Fix issue with
staticmodifier as part of mlt package (#6796) (by @HarelM) LngLatBounds#intersectsnow returnstruewhen bounds touch along an edge or at a corner (#6802) (by @lucaswoj)
v5.13.0
Immutable
release. Only release title and notes can be modified.
https://github.com/maplibre/maplibre-gl-js
Changes since MapLibre GL JS v5.12.0:
✨ Features and improvements
- Text labels can now include relatively uncommon Chinese, Japanese, Korean, and Vietnamese characters, as well as characters from historical writing systems. When using server-side fonts, the map may request glyph PBFs beyond U+FFFF from the server instead of throwing an error as before. (#6640) (by @1ec5)
- GeoJSON Source Diff: improve, abstract, refactor, optimize, and fix regressions. (#6681) (by @wayofthefuture)
- GeoJSONSource setData and updateData waitForCompletion option (#6688) (by @wayofthefuture)
- Improve performance of
GeoJSONSource#updateData(#6668) (by @lucaswoj) - GeoJSON Worker Refactor (#6702) (by @wayofthefuture)
🐞 Bug fixes
v5.12.0
Immutable
release. Only release title and notes can be modified.
https://github.com/maplibre/maplibre-gl-js
Changes since MapLibre GL JS v5.11.0:
✨ Features and improvements
- Add support for MapLibre Tiles (MLT) by using
encoding: 'mlt'in vector source definition (#6570) (by @Salkin975 and @HarelM) - Slice vector tiles to improve over scale vector handling (#6521). It adds the
experimentalZoomLevelsToOverscaleflag toMapOptionsto allow controlling how many zoom levels to slice and how many to scale. It seems to have better performance at high zoom levels. It can prevent Safari crashes in some scenarios by setting it to 4 or less. (by @HarelM) - Add reduceMotion option to Map Options (#6661) (by @wayofthefuture)
🐞 Bug fixes
- Fix missing
constrainOverridesetter inTransformHelper.apply(#6642) (by @larsmaxfield) - Fix blank map after WebGL context restore (#6242) (by @ToHold)
v5.11.0
Immutable
release. Only release title and notes can be modified.
https://github.com/maplibre/maplibre-gl-js
Changes since MapLibre GL JS v5.10.0:
✨ Features and improvements
- Improve performance of
GeoJSONSource#updateDatawhen called on small diffs (#6562) (by @lucaswoj) - If the stylesheet lacks a
glyphsproperty at the root level, interpret thetext-fontproperty as a cascading fallback list of font names and render all text using local or system fonts. (#4564) (by @1ec5) ⚠️ Refactor SourceCache to TileManager (#6635) - this is not a breaking change since SourceCache is not part of the public API, but if you have a plugin that uses internal stuff, it might break... (by @wayofthefuture)
🐞 Bug fixes
- If a required glyph PBF is unavailable or it lacks a glyph for a character in a
text-field, try to render it locally instead of crashing. (#4564) (by @1ec5) - Export
now()function in timeControl API to complete the API and enable external code to read controlled time (#6644) (by @bjperson) - ScaleControl CSS styling contains
white-space: nowrapto prevent wrapping (#6647) (by @stroebjo) - Fix edge fading for unloaded tiles (#6650) (by @wayofthefuture)