Skip to content

v4.0.0

Compare
Choose a tag to compare
@github-actions github-actions released this 01 Feb 10:30
· 1016 commits to main since this release
6eeb428

https://github.com/maplibre/maplibre-gl-js
Changes since MapLibre GL JS v3.6.2:

✨ Features and improvements

  • ⚠️ Remove all global getters and setters from maplibregl, this means the the following methods have changed:

    • maplibregl.version => getVersion()
    • maplibregl.workerCount => getWorkerCount(), setWorkerCount(...)
    • maplibregl.maxParallelImageRequests => getMaxParallelImageRequests(), setMaxParallelImageRequests(...)
    • maplibregl.workerUrl => getWorkerUrl(), setWorkerUrl(...)

    This is to avoid the need to use a global object and allow named exports/imports (#3601)

  • ⚠️ Change attribution to be on by default, change MapOptions.attributionControl to be the type that the control handles, removed MapOptions.customAttribution (#3618)
    Note: showing the logo of MapLibre is not required for using MapLibre.

  • ⚠️ Changed cooperative gesture config and removed the strings from it in favor of the locale variable (#3621)

  • ⚠️ Changed the terrain enable disable locale key to match the other keys' styles, updated the typings to allow using locale with more ease (#3621)

  • ⚠️ Add the ability to import a script in the worker thread and call addProtocol and removeProtocol there (#3459) - this also changed how addSourceType works since now you'll need to load the script with maplibregl.importScriptInWorkers.

  • ⚠️ Changes addProtocol to be promise-based without the usage of callbacks and cancelable (#3433)

  • ⚠️ Moved the addSourceType to be a part of the global maplibregl object instead of being per map object (#3420)

  • ⚠️ Removed callback usage from map.loadImage in continue to below change (#3422)

  • ⚠️ Changed the GeoJSONSource's getClusterExpansionZoom, getClusterChildren, getClusterLeaves methods to return a Promise instead of a callback usage (#3421)

  • ⚠️ Changed the setRTLTextPlugin function to return a promise instead of using callback (#3418) this also changed how the RTL pluing code is handled internally by splitting the main thread and worker thread code.

  • ⚠️ Remove setCooperativeGestures and getCooperativeGestures functions in favor of cooperativeGestures handler which now has an enabled() or disabled() methods (#3430)

  • ⚠️ Changed the undeling worker communication from callbacks to promises. This has a breaking effect on the implementation of custom WorkerSource and how it behaves (#3233)

  • ⚠️ Changed the Source interface to return promises instead of callbacks (#3233)

  • ⚠️ Changed all the sources to be promises based. (#3233)

  • ⚠️ Changed the map.loadImage method to return a Promise instead of a callback usage (#3233)

  • Add "opacity" option and setOpacity method to Marker (#3620)

  • Created a new example showing how to place a threejs scene as a CustomLayer over maplibre 3d-terrain (#3429)

  • Changed ImageRequest to be Promise based (#3233)

  • Improved precision and added a subtle fade transition to marker opacity changes (#3431)

  • Adds support for terrain in setStyle with diff method (#3515, #3463)

  • Upgraded to use Node JS 20 and removed the dependency of gl package from the tests to allow easier develpment setup. (#3452)

🐞 Bug fixes

  • Fix wheel zoom to be into the same direction above or under the horizon (#3398)
  • Fix _cameraForBoxAndBearing not fitting bounds properly when using asymettrical camera viewport and bearing.(#3591)
  • Fix missing export Map type in the d.ts file (#3564)
  • Fix the shifted mouse events after a css transform scale on the map container (#3437)
  • Fix markers remaining transparent when disabling terrain (#3431)
  • Fix labels disappearing when enabling terrain at high zoom (#3545)
  • Fix zooming outside the central globe when terrain 3D is enabled (#3425)
  • Fix cursor being shown indefinitely as a pointer when removing a popup with its trackPointer method active (#3434)
  • Fix a bug in showing cooperative gestures when scroll zoom is disabled (#2498)
  • Handle loading of empty raster tiles (204 No Content) (#3428)
  • Fixes a security issue in Actor against XSS attacks in postMessage / onmessage (#3239)