v3.0.0
https://github.com/maplibre/maplibre-gl-js
Changes since MapLibre GL JS v3.0.0-pre.9:
New features and improvements
- Add
transformCameraUpdatecallback toMapoptions (#2535) - Bump KDBush and supercluster for better memory efficiency (#2522)
- Improve performance by using HTMLImageElement to download raster source images when refreshExpiredTiles tiles is false (#2126)
- Set fetchPriority for HTMLImageElement to help improve raster-heavy scenarios (#2459)
- Reduce rendering calls on initial load. No reason to try rendering before the style is loaded. (#2464)
- Lazy load default style properties on demand to improve loading performance and reduce memory usage. (#2476)
- Add queryTerrainElevation allows getting terrain elevation in meters at a specific point (#2264)
- Improve performance by sending style layers to the worker thread before processing it on the main thread to allow parallel processing (#2131)
- Add Map.getImage() to retrieve previously-loaded images. (#2168)
- Add a method to enable/disable cooperative gestures
- Update CONTRIBUTING.md with details on setting up on M1 mac (#2196)
- Update default type of originalEvent in MapLibreEvent to be
unknown(#2243) - Improve performance when forcing full symbol placement by short-circuiting pause checks (#2241)
- Adding a
warnoncewhen terrain and hillshade source are the same (#2298) - Remove a deprecation warning by removing an empty texture that is no longer being used in the codebase (#2299)
- Improve initial loading performance by lazy serializing layers only when needed. (#2306)
- Add validateStyle MapOption to allow disabling style validation for faster performance in production environment. (#2390)
- Add
setiClusterOptionsto update cluster properties of the added sources: fixing these issues (#429) and (#1384) - Add types for
workerOptionsand_optionsingeojson_source.ts - Add fullscreenstart, fullscreenend events to FullscreenControl (#2128
- Throttle the image request queue while the map is moving to improve performance (#2097
- Add support for multiple
spritedeclarations in one style file (#1805) - Extract sprite image on demand to reduce memory usage and improve performance by reducing the number of getImageData calls (#1809)
QueryRenderedFeaturesOptionstype added to both of the params in queryRenderedFeatures in map.ts (#1900)- NavigationControlOptions is now optional when creating an instance of NavigationControl (#1754)
- Listen to webglcontextcreationerror event and give detailed debug info when it fails (#1715)
- Make sure
cooperativeGesturesoverlay is always "on top" (z-index) of map features (#1753) - Use
willReadFrequentlyhint to optimize 2D canvas usage and remove warnings (#1808) - Speed up the cross tile symbol index in certain circumstances (#1755)
- Improve rendering speed in scenes with many colliding symbolic icons and labels (#1757)
- Make request for ImageSource cancelable (#1802)
- Throttle the image request queue while the map is moving to improve performance (#2097)
- Return a promise from
oncemethod to allow easier usage of async/await in this case (#1690) - Add pseudo (CSS) fullscreen as a fallback for iPhones (#1678)
- Add
updateDatatoGeoJSONSourcewhich allows for partial data updates (#1605) - Add a RenderPool to render tiles onto textures for 3D (#1671)
- Add map.getCameraTargetElevation() (#1558)
- Add
freezeElevationtoAnimationOptionsto allow smooth camera movement in 3D (#1514, #1492) - Add map.setStyle's transformStyle option (#1632)
Potentially breaking changes
Most of these changes will not affect your code but read carefully through the list to asses if a migration is needed.
⚠️ Cancel unloaded tile request on zooming in across multiple zooms. Previously these requests were not cancelled. (#2377)⚠️ Resize map when container element is resized. The "resize"-related events now has different data associated with it (#2157, #2551). Previously the originalEvent field was the reason of this change, for example it could be aresizeevent from the browser. Now it isResizeObserverEntry, see more here.⚠️ Improve rendering of areas below sea level, and remove elevationOffset workaround (#1578)⚠️ Remove support forhslcss color in a format that does not comply with the CSS Color specification. Colors defined inhsl(110, 0.7, 0.055)format will no longer work, instead it is recommended to use the format with percentageshsl(110, 70%, 5.5%). (#2376)⚠️ Move terrain object from style.terrain to map.terrain (#1628)⚠️ Remove deprecatedmapboxgl-css classes (usemaplibregl-instead) (#1575)⚠️ Full transition from WebGL1 to WebGL2 (browser support) (#2512, #1891)⚠️ LngLat.toBounds()is replaced by a static methodLngLatBounds.fromLngLat()(#2188)⚠️ Make geojson data source a required field to align with the docs (#1396)⚠️ Improve control initial loading performance by forcing fadeDuration to 0 till first idle event (#2447)⚠️ Remove "mapbox-gl-supported" package from API. If needed, please reference it directly instead of going through MapLibre. (#2451)⚠️ Improve control performance by restricting worker count to a max of 1 except for Safari browser. (#2354)
Bug fixes
- Fix of incorrect dash in diagonal lines with a vector source at some zoom levels. (#2479)
- Fix event.isSourceLoaded to reflect the state of source loading for sourcedata event (#2543)
- Fix overlapping of 3D building parts when 3D Terrain is activated (#2513)
- Show 3D buildings located below sea level when 3D Terrain is activated (#2544)
- Fix
LngLatBounds.extend()to correctly handle{ lng: number, lat: number }coordinates. (#2425) - Fix the accuracy-circle in the geolocate control from randomly resizing. (#2450)
- Fix the type of the
featuresproperty onMapLayerMouseEventandMapLayerTouchEventto beMapGeoJSONFeature[]in lieu ofGeoJSON.Feature[](#2244) - Fix GeolocateControl error if removed quickly (#2391)
- Fix issue unloading sprite sheet when using
setStyle(style, {diff:true})(#2146) - Fix wrap coords in
getTerrainwhenfitBoundsacross the AM (#2155) - Fix LngLat
toArraymethod return type to [number,number] (#2233) - Fix handling of text-offset with symbol-placement: line (#2170 and #2171)
- Fix geolocate control permissions failure on IOS16 web view with fallback to
window.navigator.geolocation(#2359) - Prevent unnecessary reload of raster sources when RTL Text Plugin loads (#2380)
- Fix Handle AddProtocol callback function returning an HTMLImageElement (#2393](#2393))
- Fix raster tiles being retained when raster-fade-duration is 0 (#2445, #2501)
- Fix the worker been terminated on setting new style (#2123)
- Change how meta key is detected for cooperative gestures
- Fix the worker been terminated on setting new style (#2123)
- Fix issue #1024 - Zoom center not under cursor when terrain is on
- Fix errors when running style-spec bin scripts and added missing help. Removed unnecessary script 'gl-style-composite'. (#1971)
- Fix the
sliceexpression type (#1886) - Remove dependency on
@rollup/plugin-json, which was in conflict withrollup-plugin-import-assert - Remove dependency on
@mapbox/gazetteerwhich caused some build warnings (#1757 #1898) - Fix
getElevation()causing uncaught error (#1650). - Fix headless benchmark execution especially on VM (#1732)
- fix issue #860 fill-pattern with pixelRatio > 1 is now switched correctly at runtime. (#1765)
- Fix the exception that would be thrown on
map.setStylewhen it is passed with transformStyle option and map is initialized without an initial style. (#1824) - Fix the behavior of the compass button on touch devices. (#1852)
- Fix
GeoJSONSourceappearing to never finish loading when calling itssetDatamethod immediately after adding it to aMapdue to it not firing ametadatadataevent (#1693) - Fix the gap between terrain elevated tiles (#1602)
- Fix showTileBoundaries to show the first vector source #1395
- Fix
matchexpression type (#1631) - Fix for blurry raster tiles due to raster tiles requests stuck in image queue. (#2511)