Recent Releases of leaflet

leaflet - v2.0.0-alpha.1

Changes

❇️ New Features

  • Map: New export LeafletMap as an alias for Map by @willfarrell in https://github.com/Leaflet/Leaflet/pull/9804
  • Control.Layer: New option collapseDelay by @fyyyyy in https://github.com/Leaflet/Leaflet/pull/9612

✨ Refactorings (⚠️ Breaking Changes)

  • Fully converted all classes to ESM by @simon04 in https://github.com/Leaflet/Leaflet/pull/9677
  • Use optional chaining with function calls by @simon04 in https://github.com/Leaflet/Leaflet/pull/9737

❌ Removed Features (⚠️ Breaking Changes)

  • Drop aliased functions addEventListener, removeEventListener, addOneTimeEventListener, fireEvent, hasEventListeners on Evented by @lukewarlow in https://github.com/Leaflet/Leaflet/pull/9781
  • Drop aliased functions addListener, removeListener on DomEvent by @Falke-Design in https://github.com/Leaflet/Leaflet/pull/9834

🐞 Bugfixes

  • Cleanup map.locate() by @jorri11 in https://github.com/Leaflet/Leaflet/pull/9746
  • Popup width by @IvanSanchez in https://github.com/Leaflet/Leaflet/pull/9765
  • Fix overlay shifting with new BlanketOverlay by @Falke-Design in https://github.com/Leaflet/Leaflet/pull/9822

For more information checkout the blog post: https://leafletjs.com/2025/05/18/leaflet-2.0.0-alpha.html

- JavaScript
Published by Falke-Design 10 months ago

leaflet - v2.0.0-alpha

⚡ Modernization of Leaflet

After two and a half years of hard work, we’re thrilled to announce the first alpha release of Leaflet 2.0!

This release marks a major modernization of the Leaflet codebase. We've dropped support for Internet Explorer, removed legacy methods and polyfills, adopted modern standards like Pointer Events, and now publish Leaflet as an ESM module. The global L is no longer part of the core package (though it’s still available in the bundled version leaflet-global.js for backward compatibility).

For more information checkout the blog post: https://leafletjs.com/2025/05/18/leaflet-2.0.0-alpha.html

What's New in Leaflet 2.0

  • Targeting only evergreen browsers
  • Switched from Mouse and Touch events to PointerEvents
  • ESM support and tree shaking
  • Rewritten using standardized ES6 classes

Migration

  1. Replace all factory methods with constructor calls: L.marker(latlng)new Marker(latlng)
  2. Change the <script> tag to module: <script type='module'>
  3. Replace usage of L with explicit imports from the Leaflet package: import { Marker } from 'leaflet'
    • if you are not using a package manager like npm, you can use a importmap: https://leafletjs.com/examples/quick-start/
  4. To have global access to variables of a module-script, assign them to the window object (Not recommended): window.map = map
  5. Consider Leaflet V1 Polyfill if you are using outdated plugins

Old implementation

<script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js"></script> <script> const map = L.map('map').setView([51.505, -0.09], 13); const tiles = L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png', { maxZoom: 19, attribution: '&copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>' }).addTo(map); </script>

New implementation

Module

<script type="importmap"> { "imports": { "leaflet": "https://unpkg.com/leaflet@2.0.0-alpha1/dist/leaflet.js" } } </script> <script type="module"> import L, {Map, TileLayer, Marker, Circle, Polygon, Popup} from 'leaflet'; const map = new Map('map').setView([51.505, -0.09], 13); const tiles = new TileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png', { maxZoom: 19, attribution: '&copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>' }).addTo(map); </script>

Global Script

<script src="https://unpkg.com/leaflet@2.0.0-alpha1/dist/leaflet-global.js"></script> <script> const map = new L.Map('map').setView([51.505, -0.09], 13); const tiles = new L.TileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png', { maxZoom: 19, attribution: '&copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>' }).addTo(map); </script>

Need Legacy Support?

Check out this polyfill package to help ease the transition for legacy apps: Leaflet V1 Polyfill

Changes

❇️ New Features

  • Automatically attributes OSM if OSM tiles are used and no attribution is provided by @Jouwee in https://github.com/Leaflet/Leaflet/pull/9489
  • Added decoding option to ImageOverlay by @IvanSanchez in https://github.com/Leaflet/Leaflet/pull/8650
  • Added option for setting value of aria-label for popup close button by @ShivangMishra in https://github.com/Leaflet/Leaflet/pull/8590
  • Implement BlanketOverlay as Renderer superclass by @IvanSanchez in https://github.com/Leaflet/Leaflet/pull/8611
  • Support SSR by @Falke-Design in https://github.com/Leaflet/Leaflet/pull/9385
  • Implemented trackResize for L.Popup by @IvanSanchez in https://github.com/Leaflet/Leaflet/pull/9605
  • VideoOverlay: add controls option by @simon04 in https://github.com/Leaflet/Leaflet/pull/9666
  • Add aria-keyshortcuts to map container by @chcederquist in https://github.com/Leaflet/Leaflet/pull/9688
  • Expand layers control on Enter keydown by @larsgw in https://github.com/Leaflet/Leaflet/pull/8556

✨ Refactorings (⚠️ Breaking Changes)

  • Change <section> to <fieldset> in the layers control by @tmiaa in https://github.com/Leaflet/Leaflet/pull/7912
  • Use ResizeObserver for map resizes by @IvanSanchez in https://github.com/Leaflet/Leaflet/pull/8612
  • Remove usage of global L and safeguard against it by @mourner in https://github.com/Leaflet/Leaflet/pull/8536
  • Replace Util.bind() with Function.bind() by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8484
  • Replace Util.isArray() with Array.isArray() by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8683
  • Replace Util.create() with Object.create() by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8681
  • Replace Util.trim() with String.prototype.trim() by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8682
  • Prefer Object.hasOwn() over Object.prototype.hasOwnProperty() by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8684
  • Use the classList API for class manipulation methods in DomUtil by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8685
  • Replace DomUtil.hasClass() with classList.contains() by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8727
  • Replace DomUtil.getClass() with classList.value by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8728
  • Remove DomUtil.setClass() method by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8729
  • Replace DomUtil.addClass() with classList.add() by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8731
  • Replace DomUtil.removeClass() with classList.remove() by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8732
  • Replace DomUtil.remove() with Element.remove() by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8735
  • Replace DomUtil.empty() with Element.replaceChildren() by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8736
  • Hold element positions in WeakMap by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8749
  • Destructure statics and includes from class properties by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8823
  • Enforce .js file extension for module imports by @jessetane in https://github.com/Leaflet/Leaflet/pull/8837
  • Move callInitHooks() to prototype of Class by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8825
  • Use Object.setPrototypeOf() to extend Class by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8824
  • Use Pointer Events for Map.Keyboard by @Falke-Design in https://github.com/Leaflet/Leaflet/pull/8758
  • Convert Class to a JavaScript class by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8871
  • Drop __super__ property from Class by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8800
  • Move initialization logic for sub-classes to Class constructor by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8872
  • Use Pointer Events for Map.BoxZoom by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8757
  • Use Pointer Events for Control.Layers by @Falke-Design in https://github.com/Leaflet/Leaflet/pull/8759
  • Drop UMD and make ESM the default entrypoint by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8826
  • Replace animation frame polyfill with native API by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8810
  • Rename TouchZoom handler to PinchZoom (keep TouchZoom as alias for backward compatibility) by @Mahendra-006 in https://github.com/Leaflet/Leaflet/pull/9642
  • Use nullish coalescing and optional chaining by @simon04 in https://github.com/Leaflet/Leaflet/pull/9661
  • Use arrow callback and shorthand methods by @simon04 in https://github.com/Leaflet/Leaflet/pull/9659
  • Replace Util.getParamString with URL.searchParams by @simon04 in https://github.com/Leaflet/Leaflet/pull/9654
  • Convert Bounds, LatLng, LatLngBounds, Point, Transformation to ES6 classes by @simon04 in https://github.com/Leaflet/Leaflet/pull/9655
  • Use for...of by @simon04 in https://github.com/Leaflet/Leaflet/pull/9653
  • Replace Util.extend with ES6 Object.assign or object spread by @simon04 in https://github.com/Leaflet/Leaflet/pull/9652
  • Refactor to PointerEvents by @Falke-Design in https://github.com/Leaflet/Leaflet/pull/9620
  • Convert CRS to ES6 classes by @simon04 in https://github.com/Leaflet/Leaflet/pull/9669
  • Use SVG icon for layer control by @simon04 in https://github.com/Leaflet/Leaflet/pull/9665
  • Optimize PNG files by @dilyanpalauzov in https://github.com/Leaflet/Leaflet/pull/8661
  • Add shadow-icon as svg icon and add white circle to marker-icon by @Falke-Design in https://github.com/Leaflet/Leaflet/pull/8768

❌ Removed Features (⚠️ Breaking Changes)

  • Drop legacy VML code & official support for IE7–8 by @mourner in https://github.com/Leaflet/Leaflet/pull/8196
  • Remove the long-deprecated L.Mixin.Events and _flat by @mourner in https://github.com/Leaflet/Leaflet/pull/8537
  • Remove Internet Explorer from browser detection by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8559
  • Remove legacy CSS hacks and unused prefixes by @mourner in https://github.com/Leaflet/Leaflet/pull/8600
  • Remove Microsoft-specific Pointer Events from browser detection by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8603
  • Remove Android from browser detection by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8607
  • Remove Edge from browser detection by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8606
  • Remove Opera from browser detection by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8621
  • Remove PhantomJS from browser detection by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8622
  • Remove indexOf() function from Util by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8623
  • Stop inheriting filter CSS property on tiles by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8651
  • Remove DomUtil.setOpacity by @mourner in https://github.com/Leaflet/Leaflet/pull/8730
  • Remove DomUtil.TRANSFORM constant by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8733
  • Remove TRANSITION and TRANSITION_END constants from DomUtil by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8734
  • Remove vendor prefixes when setting userSelect style by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8738
  • Remove DomUtil.testProp() by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8739
  • Remove DomUtil.getStyle() by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8747
  • Remove Browser.any3d by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8748
  • Remove SVG feature detection code by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8755
  • Remove noConflict() by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8753
  • Remove browser specific detection code for CSS transforms by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8751
  • Remove L_NO_TOUCH global switch by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8752
  • Remove Browser.canvas feature detection by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8754
  • Remove Windows platform detection by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8769
  • Remove Gecko-based browser detection by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8770
  • Remove references to PhantomJS by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8771
  • Remove passive event detection by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8772
  • Remove WebKit-based browser detection by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8773
  • Remove deprecated which and change button to main-button by @Falke-Design in https://github.com/Leaflet/Leaflet/pull/8796
  • Remove jitter debug page by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8829
  • Remove legacy timer fallbacks for requestAnimFrame by @mourner in https://github.com/Leaflet/Leaflet/pull/9236
  • Get rif of prefixed requestAnimationFrame leftovers by @mourner in https://github.com/Leaflet/Leaflet/pull/9241
  • Removes mozEvent warning by @Falke-Design in https://github.com/Leaflet/Leaflet/pull/9650
  • Remove deprecated methods / options by @Falke-Design in https://github.com/Leaflet/Leaflet/pull/9622
  • Removes factory functions by @Falke-Design in https://github.com/Leaflet/Leaflet/pull/9626
  • Bring back global L as new bundle leaflet-global.js by @Falke-Design in https://github.com/Leaflet/Leaflet/pull/9686

🐞 Bugfixes

  • Fix Events.listens for nested propagations by @Falke-Design in https://github.com/Leaflet/Leaflet/pull/8457
  • Fix marker popup location by @raychanks in https://github.com/Leaflet/Leaflet/pull/8523
  • Fix intermittent wobble when setMaxBounds(map.getBounds()) by @rjackson in https://github.com/Leaflet/Leaflet/pull/8534
  • Alternate fix for PopUp keepInView recursion and speed up associated test by @rjackson in https://github.com/Leaflet/Leaflet/pull/8520
  • Support sticky maps by @tmiaa in https://github.com/Leaflet/Leaflet/pull/8550
  • Align the scale control's alpha transparency with the attribution control by @Malvoz in https://github.com/Leaflet/Leaflet/pull/8547
  • Allow the scale control's text to overflow the container by @Malvoz in https://github.com/Leaflet/Leaflet/pull/8548
  • Fixes event target of popupopen event and adds test by @Belair34 in https://github.com/Leaflet/Leaflet/pull/8571
  • Fix worldCopyJump with Keyboard by @Falke-Design in https://github.com/Leaflet/Leaflet/pull/8562
  • Fix CSS syntax error in leaflet.css by @Malvoz in https://github.com/Leaflet/Leaflet/pull/8628
  • Fix closed coord's reference in latLngsToCoords by @marlo22 in https://github.com/Leaflet/Leaflet/pull/7344
  • Rename 'closed' parameter of 'latLngsToCoords' to 'close' to avoid confusion by @ronaldhoek in https://github.com/Leaflet/Leaflet/pull/8678
  • toGeoJSON() should still work if no values in coords array by @Falke-Design in https://github.com/Leaflet/Leaflet/pull/8737
  • Fix implementation for disabling & enabling text selection by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8741
  • fix vector drifts when zoomAnimation is false and zooming via flyTo or pinch by @plainheart in https://github.com/Leaflet/Leaflet/pull/8794
  • Update PolyUtil.js by @davidmgvaz in https://github.com/Leaflet/Leaflet/pull/8840
  • Revamp synthetic dblclick event instantiation by @IvanSanchez in https://github.com/Leaflet/Leaflet/pull/8632
  • Alleviate tile gaps in chromium by using mix-blend-mode CSS by @IvanSanchez in https://github.com/Leaflet/Leaflet/pull/8891
  • Apply mix-blend-mode only on tile images by @Falke-Design in https://github.com/Leaflet/Leaflet/pull/8907
  • Set outlineStyle instead of outline when preventing outline by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8917
  • Prevent adding layer while expanding Layer-Control on mobile by @Falke-Design in https://github.com/Leaflet/Leaflet/pull/8910
  • Fix tooltip focus listener if getElement is no function by @Falke-Design in https://github.com/Leaflet/Leaflet/pull/8890
  • Fix issue whereby tooltips loaded dynamically while moving the map were never shown. by @theGOTOguy in https://github.com/Leaflet/Leaflet/pull/8672
  • Fix noMoveStart option for fitBounds method by @AbdullahSohail-SE in https://github.com/Leaflet/Leaflet/pull/8911
  • Mapbox tiles not loading 8960 by @Dele-Oyelese in https://github.com/Leaflet/Leaflet/pull/8968
  • Update the height of the container after resizing the window by @Falke-Design in https://github.com/Leaflet/Leaflet/pull/9019
  • Use _limitZoom in flyTo, like we do in resetView by @yohanboniface in https://github.com/Leaflet/Leaflet/pull/9025
  • Do not propagate click when element has been removed from dom by @yohanboniface in https://github.com/Leaflet/Leaflet/pull/9052
  • Fixes showing tooltip while panning the map by @Falke-Design in https://github.com/Leaflet/Leaflet/pull/9154
  • Fix hover underline in flag + Leaflet attribution prefix by @rkaravia in https://github.com/Leaflet/Leaflet/pull/9280
  • Prevent showing outline-box on Chromium when clicking on a vector with a tooltip by @Falke-Design in https://github.com/Leaflet/Leaflet/pull/9393
  • Clear timeouts on remove (#9575) by @Mark-Falconbridge-i2 in https://github.com/Leaflet/Leaflet/pull/9577
  • Fix Leaflet attribution link by @florian-h05 in https://github.com/Leaflet/Leaflet/pull/9471
  • Solution to issue 9067 - Inverting x axis of L.CRS.Simple causes L.Circle to have no radius by @bakp22 in https://github.com/Leaflet/Leaflet/pull/9414
  • Unbind tooltip remove focus listeners by @hollowM1ke in https://github.com/Leaflet/Leaflet/pull/9232
  • Refocus map after using layers control (#9004) by @quarl in https://github.com/Leaflet/Leaflet/pull/9005
  • GridLayer construct url with integer {z} for fractional zoom by @raychanks in https://github.com/Leaflet/Leaflet/pull/8613
  • Fix adding Icon.Default shadow icon to the map if option is falsy by @Falke-Design in https://github.com/Leaflet/Leaflet/pull/9607
  • Clean up DOM event listeners when destroying Map's animation proxy by @samclaus in https://github.com/Leaflet/Leaflet/pull/9048
  • Fix Canvas rendering with setting _redrawRequest to null for requestAnimFrame by @Falke-Design in https://github.com/Leaflet/Leaflet/pull/9608
  • Add dashOffset to Canvas by @Falke-Design in https://github.com/Leaflet/Leaflet/pull/9649
  • Add cancelable check before preventDefault while dragging by @Falke-Design in https://github.com/Leaflet/Leaflet/pull/9639
  • Fix video control / seek bar usage in safari by @Falke-Design in https://github.com/Leaflet/Leaflet/pull/9641
  • GeoJSON: fix object spread regression by @simon04 in https://github.com/Leaflet/Leaflet/pull/9678
  • Use arrow callback by @simon04 in https://github.com/Leaflet/Leaflet/pull/9684
  • TileLayer.WMS: fix wmsParams parameter regression by @simon04 in https://github.com/Leaflet/Leaflet/pull/9683

📝 Docs

  • Update website & docs for v1.9.0 by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8453
  • Fix the resource integrity hashes by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8456
  • README: update JS size for 1.9.1 by @simon04 in https://github.com/Leaflet/Leaflet/pull/8468
  • Deprecate old versions' docs by @Malvoz in https://github.com/Leaflet/Leaflet/pull/8294
  • Use the topmost browsing context for links in tutorial frames by @Malvoz in https://github.com/Leaflet/Leaflet/pull/8466
  • Update the Leaflet Editor's description and map id by @Malvoz in https://github.com/Leaflet/Leaflet/pull/8476
  • Quick-start: fix link in code block. by @Sjlver in https://github.com/Leaflet/Leaflet/pull/8415
  • fixing typo lon->lng in refence.html file by @shashwat010 in https://github.com/Leaflet/Leaflet/pull/8497
  • chore: replaced substr with substring by @k-rajat19 in https://github.com/Leaflet/Leaflet/pull/8517
  • Update documentation for v1.9.2 by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8527
  • Update changelog with latest revisions by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8528
  • Adding documentation for the support of lon in the latLng function, resolves 8509 by @brianferry in https://github.com/Leaflet/Leaflet/pull/8524
  • Fixed some grammers in readme by @Saran-pariyar in https://github.com/Leaflet/Leaflet/pull/8539
  • Fix 2 links without URLs in docs by @Malvoz in https://github.com/Leaflet/Leaflet/pull/8542
  • Fix markdown link of ImageOverlay.decoding by @plainheart in https://github.com/Leaflet/Leaflet/pull/8660
  • Update Changelog 1.9.3 - main by @Falke-Design in https://github.com/Leaflet/Leaflet/pull/8662
  • Minor typo in code example by @Lalaluka in https://github.com/Leaflet/Leaflet/pull/8710
  • Added missing curly bracket in docs by @i-sukhanov in https://github.com/Leaflet/Leaflet/pull/8767
  • Update docs language for HTML and CSS. by @alope107 in https://github.com/Leaflet/Leaflet/pull/8934
  • CHANGELOG.md - Add 1.9.4 by @mtmail in https://github.com/Leaflet/Leaflet/pull/8967
  • Update stackoverflow image #9023 by @Beast-Hunter in https://github.com/Leaflet/Leaflet/pull/9030
  • Updated Twitter Logo and Name by @aialok in https://github.com/Leaflet/Leaflet/pull/9102
  • Updated Multiple Logos by @UmerrAli in https://github.com/Leaflet/Leaflet/pull/9136
  • Update License to 2024 by @arnabsen in https://github.com/Leaflet/Leaflet/pull/9219
  • Changed Wording by @hollowM1ke in https://github.com/Leaflet/Leaflet/pull/9229
  • remove dead links in https://github.com/Leaflet/Leaflet/pull/9305
  • Add citation.cff to repo by @nakajimayoshi in https://github.com/Leaflet/Leaflet/pull/9341
  • Docstrings for L.Marker getElement() by @yuri-karelics in https://github.com/Leaflet/Leaflet/pull/9180
  • Add Stadia Maps to FAQ by @ianthetechie in https://github.com/Leaflet/Leaflet/pull/9340
  • Removed unused variable from the choropleth example doc by @Cinderella-Man in https://github.com/Leaflet/Leaflet/pull/9182
  • Add scroll up button to website by @simondriesen in https://github.com/Leaflet/Leaflet/pull/9186
  • Add scrollbar to container if the text can't wrapped on mobile devices by @Falke-Design in https://github.com/Leaflet/Leaflet/pull/9384
  • Update CONTRIBUTING.md by @cherylhughey in https://github.com/Leaflet/Leaflet/pull/9435
  • Update FAQ.md by @cherylhughey in https://github.com/Leaflet/Leaflet/pull/9436
  • Update License to 2025 by @PixlePixle in https://github.com/Leaflet/Leaflet/pull/9597
  • Evergreen language updates and removal by @Kxiru in https://github.com/Leaflet/Leaflet/pull/9528
  • Changed slogan with evergreen wording #8477 by @JoT8ng in https://github.com/Leaflet/Leaflet/pull/9491
  • Updated Evergreen language in the documentation #8477 {please label me for Hacktoberfest-24} by @Dhairya-A-Mehra in https://github.com/Leaflet/Leaflet/pull/9488
  • Update browser support list by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8455
  • Create SECURITY.md by @Ahlam-Banu in https://github.com/Leaflet/Leaflet/pull/9619
  • Refactor docs for ESM by @Falke-Design in https://github.com/Leaflet/Leaflet/pull/9624
  • Improve documentation about renderer and pane by @Falke-Design in https://github.com/Leaflet/Leaflet/pull/9651
  • Replace unpkg with jsDelivr in documentation (fixes #9628) by @eshanair in https://github.com/Leaflet/Leaflet/pull/9663
  • Remove dead link(Placekitten.com) for Cataas(fixes #9691) by @MelvinManni in https://github.com/Leaflet/Leaflet/pull/9695
  • Updated titles to be descriptive, aligned tutorial titles with overvi… by @chcederquist in https://github.com/Leaflet/Leaflet/pull/9692
  • Add position doc string to controls by @Falke-Design in https://github.com/Leaflet/Leaflet/pull/8570

📜 Formatting

  • Enforce quotes ESLint rule for the spec directory by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8686
  • Provide file extensions when running ESLint by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8831
  • Lint files in debug directory by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8925
  • Upgrade to ESLint 9+ and flat config by @mourner in https://github.com/Leaflet/Leaflet/pull/9410
  • Enable prefer-exponentiation-operator linting rule and fix issues by @simon04 in https://github.com/Leaflet/Leaflet/pull/9660
  • Guard for-in loops and enable guard-for-in lint rule. by @alope107 in https://github.com/Leaflet/Leaflet/pull/8879
  • Split ESLint config and clean it up by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8563
  • Upgrade ESLint config to latest version by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8583
  • Enable arrow-spacing linting rule and fix issues by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8584
  • Enable func-name-matching linting rule and fix issues by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8585
  • Enable no-duplicate-imports linting rule and fix issues by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8586
  • Enable prefer-template linting rule and fix issues by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8587
  • Enable prefer-rest-params linting rule and fix issues by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8593
  • Enable object-shorthand linting rule and fix issues by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8592
  • Enable prefer-arrow-callback linting rule and fix issues by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8594
  • Enable no-var linting rule and fix issues by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8602
  • Remove unused test globals from ESLint config by @jonkoops in https://github.com/Leaflet/Leaflet/pull/9285

🔧 Workflow

  • Improve integrity generation for releases by @mourner in https://github.com/Leaflet/Leaflet/pull/8459
  • Remove the release check to manually modify the version number in reference.html by @Malvoz in https://github.com/Leaflet/Leaflet/pull/8475
  • Use different cache keys by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8487
  • Add build-docs job to main github actions file by @exequiel09 in https://github.com/Leaflet/Leaflet/pull/8504
  • Add step for release assets by @IvanSanchez in https://github.com/Leaflet/Leaflet/pull/8494
  • Add Dependabot config for Bundler dependencies by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8516
  • tests workflow for mac and win by @adrianaris in https://github.com/Leaflet/Leaflet/pull/8540
  • Upgrade Rollup to version 3 by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8582
  • Convert build scripts into ESM by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8610
  • Use Node.js version 18 for CI by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8640
  • Add a note to release docs to ensure green CI by @mourner in https://github.com/Leaflet/Leaflet/pull/8668
  • Run CI on Ubuntu 20.04 by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8670
  • Simplify workflows on CI by @mourner in https://github.com/Leaflet/Leaflet/pull/8671
  • Upgrade Bundlemon to v2 by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8676
  • Lock actions/cache to version 3.2.0 by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8742
  • Run CI on latest version of Ubuntu by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8744
  • Run CI on latest version of Windows by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8743
  • Use OS name as part of cache key for jobs by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8750
  • Always build ESM version in watch mode by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8844
  • Add dev dependency http-server for debugging ESM by @jessetane in https://github.com/Leaflet/Leaflet/pull/8848
  • Regenerate lockfile in version 3 format by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8919
  • Remove Rollup pre-proccesor from Karma runner by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8935
  • Add possibility to create coverage reports by @Falke-Design in https://github.com/Leaflet/Leaflet/pull/9029
  • Include prosthetic-hand from GitHub by @jonkoops in https://github.com/Leaflet/Leaflet/pull/9033
  • Upgrade and cleanup dev dependencies by @mourner in https://github.com/Leaflet/Leaflet/pull/9157
  • Set versioning-strategy for NPM to increase by @jonkoops in https://github.com/Leaflet/Leaflet/pull/9165
  • Speed up Karma runner by narrowing down files Karma serves by @mourner in https://github.com/Leaflet/Leaflet/pull/9231
  • Upgrade Husky to latest version by @jonkoops in https://github.com/Leaflet/Leaflet/pull/9264
  • Run test with the source files by @Falke-Design in https://github.com/Leaflet/Leaflet/pull/9609
  • Add missing "./dist/leaflet.css" specifier in "leaflet" package by @simon04 in https://github.com/Leaflet/Leaflet/pull/9658
  • Address npm audit issues by @Falke-Design in https://github.com/Leaflet/Leaflet/pull/9714
  • Replace version when npm version is called by @Falke-Design in https://github.com/Leaflet/Leaflet/pull/9717
  • Remove Karma launcher for Microsoft Edge by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8604
  • Remove Internet Explorer from test framework by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8264

🧪 Tests

  • Disable zoom animation for Line/PolyUtil tests by @mourner in https://github.com/Leaflet/Leaflet/pull/8478
  • Fix test on mac changes the option 'wheelPxPerZoomLevel' by @Falke-Design in https://github.com/Leaflet/Leaflet/pull/8481
  • Make test runner output cleaner by @mourner in https://github.com/Leaflet/Leaflet/pull/8480
  • Add slow test stats and make some tests faster by @mourner in https://github.com/Leaflet/Leaflet/pull/8486
  • Added tests for panInsideBounds by @mikelowe5919 in https://github.com/Leaflet/Leaflet/pull/8429
  • Added testing for mouseEventLatLng by @spatterss135 in https://github.com/Leaflet/Leaflet/pull/8403
  • Update tests index.html and add missing RectangleSpec by @Falke-Design in https://github.com/Leaflet/Leaflet/pull/8499
  • Add test for map stopLocate (#8371) by @raychanks in https://github.com/Leaflet/Leaflet/pull/8505
  • Added test cases for Map:addHandler method by @precious-void in https://github.com/Leaflet/Leaflet/pull/8503
  • Added test cases for Map:mouseEventToContainerPoint method. by @kreloaded in https://github.com/Leaflet/Leaflet/pull/8406
  • Cover Map Locate with Unit Tests by @stephenspol in https://github.com/Leaflet/Leaflet/pull/8424
  • Add getWheelPxFactor and fix test changes the option 'wheelPxPerZoomLevel' for mac by @Falke-Design in https://github.com/Leaflet/Leaflet/pull/8512
  • Speed up PathSpec's "Add layer inside move handler" test: 611ms to 5ms (122x faster) by @rjackson in https://github.com/Leaflet/Leaflet/pull/8518
  • Speed up tests Map.ScrollWheelZoomSpec and Map.DoubleClickZoomSpec by @rjackson in https://github.com/Leaflet/Leaflet/pull/8519
  • Add panBy test by @adrianaris in https://github.com/Leaflet/Leaflet/pull/8420
  • Speed up tests relating to focusing on Marker by @rjackson in https://github.com/Leaflet/Leaflet/pull/8545
  • Speed up TileLayer.setUrl test (251ms to 13ms) by @rjackson in https://github.com/Leaflet/Leaflet/pull/8546
  • Speed up tests relating to containerPoint / layerPoint methods by @rjackson in https://github.com/Leaflet/Leaflet/pull/8544
  • Adding tests for 'layerPointToLatLng' method #8375 by @ANaphade in https://github.com/Leaflet/Leaflet/pull/8435
  • Refactor Event handling and happen.js by @Falke-Design in https://github.com/Leaflet/Leaflet/pull/8760
  • Added two more test cases for the unproject map method by @snehalvibhute in https://github.com/Leaflet/Leaflet/pull/8637
  • Replace expect.js with Chai by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8952
  • Import Leaflet in tests using JavaScript modules by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8975
  • Update ui-event-simulator and import as JavaScript module by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8977
  • Add tests for BoxZoom by @Falke-Design in https://github.com/Leaflet/Leaflet/pull/9032
  • Fix CI tests to not depend on big Chrome window size by @mourner in https://github.com/Leaflet/Leaflet/pull/9235
  • Use explicit imports chai and sinon in the test suite by @jonkoops in https://github.com/Leaflet/Leaflet/pull/9284
  • Set Chrome window size to fix failing test in ubuntu by @Falke-Design in https://github.com/Leaflet/Leaflet/pull/9604
  • add test for project method by @AshwinNema in https://github.com/Leaflet/Leaflet/pull/9303
  • Add demo for all GeoJSON types by @simon04 in https://github.com/Leaflet/Leaflet/pull/9679
  • Vector Drift Test Pinch Zoom Fix by @stephenspol in https://github.com/Leaflet/Leaflet/pull/8644
  • Convert control layers debug page to ESM by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8832
  • Convert canvas debug page to ESM by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8830
  • Convert geolocation debug page to ESM by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8835
  • Convert controls debug page to ESM by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8834
  • Convert map debug pages to ESM by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8838
  • Convert test debug pages to ESM by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8921
  • Convert vector debug pages to ESM by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8924
  • Use import maps to load Leaflet in the debug directory by @jonkoops in https://github.com/Leaflet/Leaflet/pull/8926
  • flyToBounds tests added by @shreya024 in https://github.com/Leaflet/Leaflet/pull/9112
  • Add test for map stop (#8369) by @victorpatru in https://github.com/Leaflet/Leaflet/pull/8581

Full Changelog: https://github.com/Leaflet/Leaflet/compare/v1.9.4...v2.0.0-alpha

- JavaScript
Published by Falke-Design about 1 year ago

leaflet - v1.9.4

🐞 Bug fixes

  • Fix tile gaps in Chromium-based browsers (#8891 by @IvanSanchez)
  • Fix vector drifts when zoomAnimation is false and zooming via flyTo or pinch (#8794 by @plainheart)
  • Ensure toGeoJSON() still works with an empty array (#8737 by @Falke-Design)
  • Ensure LineUtil and PolyUtil only iterate over array values and not properties (#8840 by @Falke-Design)
  • Fix rounding errors in center calculation of LineUtil and PolyUtil for small layers (#8784 by @Falke-Design)
  • Prevent unwanted layer toggle while expanding the Layers control on mobile (#8910 by @Falke-Design)
  • Fix an error when a focusing on a Tooltip-bound FeatureGroup that contains a layer without a getElement method (#8890 by @Falke-Design)
  • Fix Tooltip is not showing when loaded dynamically while moving the map (#8672 by @theGOTOguy)
  • Fix noMoveStart option not applying to fitBounds (#8911 by @AbdullahSohail-SE)
  • Fix outlines showing up when interacting with the map on Safari 16.4+ (#8917 by @jonkoops)

- JavaScript
Published by Falke-Design about 3 years ago

leaflet - v1.9.3

🙌 Accessibility

  • Expand the layers control on Enter keydown (#8556 by @larsgw)
  • Align the scale control's alpha transparency with the attribution control (#8547 by @Malvoz)
  • Allow the scale control's text to overflow the container (#8548 by @Malvoz)

🐞 Bug fixes

- JavaScript
Published by Falke-Design over 3 years ago

leaflet -

🐞 Bug fixes

  • ⚠️ Drop ESM entrypoint from package because of numerous compatibility issues with plugins (import leaflet/dist/leaflet-src.esm.js explicitly instead to take advantage; ESM by default will come in v2) (#8493 by @jonkoops)
  • Fix a bug where tooltips could throw an error with canvas renderer (#8498 by @Falke-Design)
  • Fix a bug with incorrect marker popup location when there are multiple markers registered to the same popup (#8523 by @raychanks).

🧪 Tests

  • Fix unit tests suite stopping abruptly on Mac (#8478)

📝 Docs

- JavaScript
Published by jonkoops over 3 years ago

leaflet - v1.9.1

  • Fix Events listens not propagating to parent objects, in particular fixing compatibility with Leaflet.markercluster plugin (#8211 by @Falke-Design)

- JavaScript
Published by mourner over 3 years ago

leaflet - v1.9.0

⚡ Note on future versions

The v1.9 release is setting the stage for the first major version bump of Leaflet since 2016! A lot has changed since then, and it's time for Leaflet to grow together with the web platform.

After this release, we are branching off the 1.x code and putting it in maintenance mode — reserving potential 1.x releases only for critical bugfixes. Although version 2.0 is still far away and will take some time to take shape, we plan to make the following changes:

  • Dropping support for Internet Explorer. This has been a long time coming, but now that Internet Explorer is officially end-of-life, it's time to say goodbye. Going forward, Leaflet will move to an evergreen strategy that targets browsers like Firefox, Chrome, Edge and Safari.
  • Embracing modern JavaScript. To maintain backwards compatibility, Leaflet is written entirely in ES5, a version of JavaScript supported by legacy browsers. So we have not been able to make use of many great JavaScript features (e.g. standardized classes, instead having to rely on our own implementation). By adopting a more modern version of the ECMAScript standard, we can start working towards aligning Leaflet with what is expected from a modern JavaScript library.
  • Standardized modules. When we released Leaflet v1, the landscape in the JavaScript world was very different and full of competing module standards such as CommonJS, AMD and UMD. Today, ECMAScript modules have become the clear way forward to unite the JavaScript ecosystem under one banner. Moving forward, Leaflet will only be distributed in a single standardized module system, greatly reducing complexity of our distributed code.
  • Removing the Leaflet global. As a developer using Leaflet, the capital letter L is probably intimately familiar to you. This is the Leaflet global where all of Leaflet's functionality lives. To allow compiler tooling to better eliminate dead-code through a process called tree-shaking, we are removing this global variable. To preserve backwards compatibility with older plugins, we will provide a shim that can be imported manually that will restore this functionality.

v1.9.0 changelog

⚠️ Breaking Changes

  • (This change has been reverted in v1.9.2) Expose ESM entrypoint with Leaflet global (#8329 by @jonkoops).
  • Update color-adjust to print-color-adjust (#8211 by @Malvoz)

❇️ API changes

  • Add content and latLng options to Popup / Tooltip constructors (#7783 by @Falke-Design)
  • Extend Bounds to have the same functions as LatLngBounds (#7882 by @Falke-Design)

✨ Improvements

  • Update getCenter() calculation and move it to PolyUtil / LineUtil (#7603 by @Falke-Design)
  • Remove border styles in overflowing popups (#8260 by @Malvoz)
  • Fix "listener not found" warning when setting maxBounds (#8168 by @mourner)
  • Remove "listener not found" warning (#8234 by @Falke-Design)
  • Extend Events.listens to search for specific function (#8161 by @Falke-Design)
  • Add noMoveStart option to panTo (#6685 by @Chivano)
  • Add FeatureCollection handling to geometryToLayer (#8163 by @Falke-Design)

🙌 Accessibility

  • Improve Tooltip accessibility (focus and voice over) (#8247 by @alekzvik)
  • Fix links in accessibility guide (#8198 by @Malvoz)
  • Remove role="presentation" from image tiles (#8172 by @Malvoz)

🐞 Bug fixes

  • Fix invalid GeoJSON on unbalanced arrays (#7637 by @steff1986)
  • Fix 2 step zooming while using mouse wheel scrolling (#8298 by @Falke-Design)
  • Fix wrong assigned parameter while calling map._move over requestAnimFrame (#8328 by @AMDvsTMD)
  • Fix _isClickDisabled to not throw no error if parent is removed from DOM (#8288 by @Falke-Design)
  • Fix DomEvent.DoubleTap to ignore clicks on <label>s with a for attribute (#8227 by @IvanSanchez)
  • Fix calling once() twice if same event is fired inside once (#8190 by @Falke-Design)
  • Fix map.getCenter() returning a mutable object (#8167 by @mourner)
  • Fix regression about popup close button modifying the URL (#8160 by @IvanSanchez)
  • Fix min/maxZoom when used in combination with detectRetina (#7328 by @bozdoz)

📝 Docs

  • Use preferred tile.openstreetmap.org URL (#8418 by @Firefishy)
  • Use LocalStorage for dialog sessions (#8382 by @ChristopherWirtOfficial)
  • Update anchor links for headers and in collapsed accordions (#7780 by @Falke-Design)
  • Fix typo in reference-1.6.0.html (#8330 by @eltociear)
  • Add pre-commit linting to CONTRIBUTING.md (#8299 by @Falke-Design)
  • Ensure no borders on dialog iframe (#8296 by @Malvoz)
  • Replace Mapbox with OpenStreetMap in tutorials and examples (#7818 by @Falke-Design)
  • Remove DOCS-TODO.md (#8259 by @Malvoz)
  • Better PosAnimation example (#7386 by @stell)
  • Correct heading level in GeoJSON example (#8230 by @Malvoz)
  • Update Overlay Tutorial (ImageOverlay, VideoOverlay, SVGOverlay) (#8090 by @KonstantinBiryukov)
  • Change attribute anchor to data-anchor (#8174 by @KnightJam1)
  • Fix bad markdown causing link to not work (#8156 by @freyfogle)
  • A couple of site SEO fixes (#8229 by @Malvoz)
  • Fix attribution flag 1px misalignment on some websites (#8170 by @mourner)
  • Attribution flag now resizes with font-size changes (#8183 by @sumitsaurabh927)
  • Add Dialog to website (#8177 by @Falke-Design and #8193, #8194 by @Malvoz)

🔧 Workflow

  • Improve GitHub Workflows security (#8419 by @sashashura)
  • Update development dependencies
  • Replace deprecated eslint-plugin-script-tags (#8331 by @jonkoops)
  • Use major version ranges for Github Actions (#8286 by @jonkoops)
  • Configure YAML issue forms (#8246 by @Malvoz)
  • Add FUNDING.yml (@mourner)
  • Add pre-commit hook to fix linting issues (#8212 by @jonkoops)
  • Remove Dependabot specific labels (#8199 by @jonkoops)
  • Use shorter bundlemon names (#8195 by @mourner)
  • Make sure integrity hashes are generated for the built version (@mourner)

🧪 Tests

  • Added test cases for map.latLngToLayerPoint method (#8407 by @kreloaded)
  • Add test for map.panTo (#8390 by @anurag-dhamala)
  • Add test for map.containerPointToLatLng and map.latLngToContainerPoint (#8384 by @abhi3315)
  • Add test for Layer._addZoomLimit (#8037 by @zishiwu123)
  • Add tests for Map (#8206 by @stephenspol)
  • Add test for CircleMarker._containsPoint (#8340 by @gernhard1337)
  • Add missing handler tests (#8182 by @Falke-Design)
  • Cover Rectangle with unit Tests (#8144 by @stephenspol)

v1.9.x updates:

We've since released: - v1.9.1 to address compatibility with Leaflet.markercluster plugin. - v1.9.2 to fix ESM compatibility issues with other plugins, and fix and issue tooltips & canvas renderer.

Stand With Ukraine

- JavaScript
Published by jonkoops over 3 years ago

leaflet - v1.8.0

v1.8.0 is a culmination of 1.5 years of development, a huge release focused on bug fixes, major reliability and accessibility improvements, cleaning up legacy code, and numerous improvements to documentation, development workflow and release process. A culmination of hundreds of contributions, and a preparation for bigger changes to come. 🍃

I'm making this release just as an air raid alert is sounding outside, in Kyiv, warning about an imminent Russian air strike. This release is dedicated to Ukrainian fight for freedom and democracy against the Russian invasion 🇺🇦 (see how you can support Ukraine here).

From now on, releases will become much more frequent. Thanks to our amazing community for all your help and patience. ❤️🙏 Special thanks to @johnd0e who revived Leaflet development after long stagnation and made the biggest contributions, @Falke-Design for doing the bulk of the work organizing development and preparing the release, @Malvoz for his numerous accessibility contributions, and @jonkoops for help with workflow automations. ❤️

⚠️ Breaking Changes

  • Improve reliability of contextmenu event simulation on mobile Safari by introducing a new TapHold handler, replacing legacy Tap (#7026 by @johnd0e)
  • Reorganize DivOverlay/Popup/Tooltip APIs (#7540 by @johnd0e)
  • Improve error / argument handling for event listeners (#7518 by @johnd0e)
  • Improve reliability of touch events simulation on non-touch devices (DomEvent.Pointer) (#7059, #7084, #7415 by @johnd0e)
  • Improve reliability of dblclick event simulation on touch devices (DomEvent.DoubleTap) (#7027 by @johnd0e)
  • Improve reliability of disableClickPropagation (#7439 by @johnd0e)
  • Improve Map hasLayer() and LayerGroup hasLayer() to require a layer as argument (#6999 by @johnd0e)
  • Fix Class.include to not overwrite options (#7756 by @johnd0e)
  • Fix Class.extend to not modify source props object (#6766 by @johnd0e)
  • Improve Browser.touch touch devices detection (#7029 by @johnd0e)
  • Get rid of legacy Android hacks (#7022 by @johnd0e)
  • Allow fonts to respect users' browser settings by making the font-size relative to the map container. (You can change the font size on leaflet-container to adjust it if needed.) (#7800 by @Chandu-4444)

❇️ API changes

✨ Improvements

  • Improve memory footprint by removing will-change CSS property on tile images (#7872 by @janjaap)
  • Improve reliability of icons path detection heuristics (#7092 by @johnd0e)
  • Improve performance of adding tiled sources by avoiding excessive updates in GridLayer.onAdd (#7570 by @johnd0e)
  • Improve handling of edge cases in panInside (#7469 by @daverayment)
  • Minify marker icon SVG (#7600 by @rala72)
  • Allow template keys with spaces in TileLayer URL (#7216 by @lubojr)
  • Improve behavior of Tooltip bound to ImageOverlay (#7306 by @IvanSanchez)
  • Remove the gap between Popup tip and content dialog (#7920 by @Malvoz)
  • Fire mousemove through Canvas to map if it has no layers (#7809 by @johnd0e)
  • Add print styles to prevent printers from removing background-images in controls (#7851 by @Malvoz)
  • Move attribution code from Layer to Control.Attribution (#7764 by @johnd0e)
  • Refactor vmlCreate() so that it does not expose closure to TypeError (#7279 by @darcyparker)
  • Improve reliability of Control.Layers by not relying on Browser android and touch properties (#7057 by @johnd0e)
  • Improve reliability of Tooltip by not relying on Browser touch checks (#7535 by @johnd0e)
  • Make Browser mutable for easier automated testing (#7335 by @bozdoz)
  • Replace div with span in Control.Layers container to fix an HTML validation error (#7914 by @tmiaa)
  • Add a Ukrainian flag to default attribution 🇺🇦 (by @mourner in https://github.com/Leaflet/Leaflet/pull/8109)

🙌 Accessibility

  • Increase default font sizes and decrease attribution transparency for improved legibility (#8057, by @mourner)
  • Improve accessibility of popup close button (#7908, by @Malvoz)
  • Auto pan to markers on focus by default for improved keyboard operability (#8042 by @IvanSanchez)
  • Add accessibility section to plugins guide (#7277 by @Malvoz)
  • Update Marker to default to role="button" & alt="marker" for an improved screen reader experience (#7895 by @tmiaa)
  • Set role="button" for appropriate semantics on the <a> layers control (#7850 by @Malvoz)
  • Generally enable outlines for keyboard users by not stripping outline on focus for keyboard events (#7259 by @jafin)
  • Enable outlines on leaflet-container for keyboard users (#7996 by @Malvoz)
  • Multiple enhancements to popup's close button (#7794 by @Falke-Design)
  • Use relative font-size units for resizable text (#7800 by @Chandu-4444)
  • Apply :hover styles to :focus as well (#7274 by @Malvoz)
  • Hide the decorative attribution separator from screen readers (#7969 by @Malvoz)
  • Make the disabled state of zoom controls available to screen readers (#7280 by @akshataj96)
  • Hide the +/- characters in zoom controls from screen readers to prevent erroneous announcements (#7795 by @Falke-Design)

🐞 Bug fixes

  • Fix vector drift when dragging and immediately zooming (by @manubb @johnd0e @mourner in https://github.com/Leaflet/Leaflet/pull/8103)
  • Reduce the occurrence of glitches on rapid zoom (by @mourner in https://github.com/Leaflet/Leaflet/pull/8102)
  • Fix Marker jumping position while zooming in certain cases (#7967 by @Falke-Design)
  • Fix opening / closing Tooltip while dragging the map (#7862 by @Falke-Design)
  • Break the reference to the options of the Class prototype (#7459 by @Falke-Design)
  • Improve Tooltip options permanent & sticky to work together (#7563 by @Falke-Design)
  • Check if map container is still connected with Leaflet in locate event listener (#7813 by @Falke-Design)
  • Fix Tooltip bindTooltip to unbind existent tooltip (#7633 by @Falke-Design)
  • Correct if condition, to add zoom limits for Layer (#7609 by @vcoppe)
  • GridLayer redraw tiles after changing maxNativeZoom (#6443 by @cherniavskii)
  • Fix Popup keepInView if the map needs to panned over a long distance (#7792 by @Falke-Design)
  • Tolerate wrong event names in add/removePointerListener (#7808 by @johnd0e)
  • Reset width & padding to prevent cascading CSS from breaking tile rendering (#6843 by @Spudley)
  • Fix mousedown event calling after dragging Canvas map (#7781 by @johnd0e)
  • Decrease console.warn pollution (#7748 by @johnd0e)
  • Fix contextmenu event default-preventing when there are >1 target candidates (#7544 by @johnd0e)
  • Prevent click on Popup-tip from firing on map. (#7541 by @johnd0e)
  • Fix error by calling Path.setStyle before adding the layer to the map (#6941 by @NielsHolt)
  • Reset BoxZoom after cancel with ESC (#7597 by @Falke-Design)
  • Fix noConflict (#7855 by @Falke-Design)
  • Fix popup appearance when content is empty (#8136, by @ansh-ag)
  • Fix latLngToCoords and latLngsToCoords not accepting array form of lat/lngs (#7436, by @Relkfaw)

📝 Docs

🔧 Workflow

🧪 Tests

🔩 Plugins

Stand With Ukraine

- JavaScript
Published by mourner about 4 years ago

leaflet - v1.8.0-beta.3

🐞 Bug fixes

  • Fix vector drift when dragging and immediately zooming (by @manubb @johnd0e @mourner in https://github.com/Leaflet/Leaflet/pull/8103)
  • Reduce the occurrence of glitches on rapid zoom (by @mourner in https://github.com/Leaflet/Leaflet/pull/8102)
  • Fix autoPanOnFocus on icons with no iconSize (by @Falke-Design in https://github.com/Leaflet/Leaflet/pull/8091)

✨ Improvements

  • Add a Ukrainian flag to default attribution 🇺🇦 (by @mourner in https://github.com/Leaflet/Leaflet/pull/8109)

🧪 Tests and workflow

  • Add GitHub Actions dependency tracking with Dependabot (by @nathannaveen in https://github.com/Leaflet/Leaflet/pull/8104)
  • Cover DomEvent with unit tests (by @stephenspol in https://github.com/Leaflet/Leaflet/pull/8088)

(Skipped v1.8.0-beta.2 because of a publishing blunder)

- JavaScript
Published by mourner about 4 years ago

leaflet -

Changes since v1.8.0-beta.0:

🐞 Bug fixes

  • Fix Uncaught TypeError: t is undefined error with markers in some editing/drawing plugins (#8084, by @Falke-Design)
  • Fix broken bundle when using Leaflet with Rollup/Webpack (#8050, by @Falke-Design)
  • Fix SVG performance regression (#8058, by @mourner)

✨ Improvements

  • Increase default font sizes and decrease attribution transparency for improved legibility (#8057, by @mourner)
  • Improve unit tests organization (#7852, by @Falke-Design)

📝 Docs

- JavaScript
Published by mourner about 4 years ago

leaflet - v1.8.0-beta.0

(changelog moved to v1.8.0 final)

- JavaScript
Published by mourner about 4 years ago

leaflet - v1.7.1

Bug fixes

  • Fix build toolchain to reflect uglifyjs upgrade from v2 to v3 (by @ivansanchez)

1.7.0 (2020-09-03)

API changes

  • VideoOverlay now can take a muted option (#7071 by @ronikar)
  • The featureGroup factory method now takes options, as the FeatureGroup constructor (#7160 by @frogcat)

Improvements

  • Use passive event listeners for touchstart/touchend events (#7008 by @yneet)
  • Better detection of PointerEvents-capable browsers in L.Browser, and related changes to Tap, Drag, and TouchZoom handlers (#7010, (#7033, (#7036, (#7068, (#7195 by @johnd0e)
  • Add more browser profiles for the automated tests (#7115 by @johnd0e)

Bug fixes

  • Fix canvas renderer not clearing the canvas on some zoom transformations, was affecting opacity of items (#6915 by @chipta)
  • Fix detection of passive events in L.Browser (#6930 by @Ivan-Perez)
  • Prefix MS-specific CSS style to prevent warnings (by @ivansanchez, kudos to @zachricha for #6960)
  • Clean up moveend listener from map.setMaxBounds (#6958 by @simon04)
  • Fix wrong scope of bind call in ESM environments (#6970 by @shintonik)
  • Check that closePopup exists before calling it automatically (#6962 by @pke)
  • Fix exception when calling layerGroup.hasLayer() with wrong layerId (#6998 by @johnd0e)
  • Remove click filter targeting Android 4.x browsers (#7013 by @johnd0e)
  • Fix touch zoom handler context (#7036 by @johnd0e)
  • Tests for Bounds.overlaps() and Bounds.intersects() (#7075 by @mondeja)
  • Fix event propagation in a popup's container (#7091 by @johnd0e)
  • Fix tile flickering when maxNativeZoom === maxZoom (#7094 by @johnd0e)
  • Fix GridLayer's zoom-level loading algorithm (#7123 by @johnd0e)
  • Fix tooltipAnchor behavior for different tooltip directions (#7155 by @Istador)

Docs & Web Site

- JavaScript
Published by IvanSanchez over 5 years ago

leaflet - v1.6.0

API changes

  • GeoJSON.resetStyle - allow invocation without an argument (#6663 by joukewitteveen)
  • Add new markersInheritOptions option to L.GeoJSON (#6866 by ghybs)

Improvements

Bug fixes

  • Fix performance issue with L.Util.formatNum (#6668 by cherniavskii)
  • Respect className option in SVGOverlay and VideoOverlay (#6679 by IvanSanchez)
  • Cancel the canvas mousehover throttle on mouseout (#6749 by IvanSanchez)
  • Check for style being passed in L.Path.setStyle (#6728 by TheRealTorreySmith)
  • Fix dblclick event when both Pointer Events and Touch Events are available (#6855 by filcab)
  • Properly unbind animation proxy events when removing map (#6867 by ghybs)
  • Fix race condition in Marker when icon is not present (#6794 by BenTalagan)

Docs & Web Site

- JavaScript
Published by cherniavskii over 6 years ago

leaflet - v1.5.1

- JavaScript
Published by cherniavskii about 7 years ago

leaflet - v1.5.0

API changes

Improvements

Bug fixes

Docs & Web Site

Development workflow

  • Update dev dependencies & remove coverage scripts (#6635 by mourner)

- JavaScript
Published by cherniavskii about 7 years ago

leaflet - v1.4.0

API changes

Improvements

  • Remove unused _drawnLayers object (#6324 by ud09)
  • Avoid unnecessary redrawing in TileLayer.setUrl() when URL does not change (#6313 by JackNeus)
  • Use section instead of form in layers control (#6380 by hundekoerper)
  • Add IE11 linked SVG elements support to DomUtil.getClass function (#6366 by Schleuse)

Bug fixes

  • Set internal flags at beginning of map initialization (#6362 by ghybs)
  • Guard against layers no longer attached to a map in bringToFront/Back() (#6389 by perliedman)
  • Fix autoPan option when popup content gets updated while a panning animation is running (#6365 by Schleuse)
  • Ignore dash arrays with non-numeric entries in canvas (#6387 by perliedman)

Docs & Web Site

- JavaScript
Published by cherniavskii over 7 years ago

leaflet - v.1.3.4

Improvements

  • Reset max-width and max-height styles for tiles in custom panes (#6255 by jerekshoe)
  • Add unprefixed cursor: grab style (#6281 by Malvoz)
  • Remove legacy prefixed styles, add unprefixed styles (#6282 by Malvoz)

Bug fixes

  • Move set/getAttribute('src') calls from GridLayer into TileLayer (#6264 by IvanSanchez)
  • Support comma- or space-separated strings in Canvas dashArray option (#6277 by IvanSanchez)
  • Remove trailing commas to avoid crashes in some IE browsers (#6279 by helbling)
  • Fixed capitalization of webkitTransform property, which broke transformations on certain Webkit browsers (#6290 by tuckergordon)

Docs & Web Site

- JavaScript
Published by cherniavskii almost 8 years ago

leaflet - v1.3.3

Bug fixes

  • Remove module field from package.json to fix plugin compatibility issues (#6239)

- JavaScript
Published by cherniavskii almost 8 years ago

leaflet - v.1.3.2

Improvements

  • Add use-credentials CORS option to ImageOverlay and TileLayer (#6016 by caleblogan) + unit tests (#6022 and #6027 by ghybs)
  • Clean up references to global L in source code (#6047 and #6048 by ghybs)
  • Allow reset of Canvas dashArray option + support array type (#6200 by McBen)

Bug fixes

  • Respect the preferCanvas option in all panes (#6019 by mjumbewu)
  • Do not fire tileload event if tile has empty src (#6025 by cherniavskii)
  • Fix race condition when removing canvas before it has rendered (#6033 by louMoxy)
  • Fix memory leak in canvas renderer (#6117 by aj8k)
  • Fix dragging for CSS scaled map (#6055 by ghybs)
  • Handle Polygons with empty array of LatLngs (#6119 by BakuCity)
  • Fix view bounds calculation in geolocation event handler (#6140 by wladich)
  • Fix error removing map and resizing window at the same time (#6160 by danzel)
  • Stop pan key event when pan animation is in progress (#6231 by cherniavskii)

Docs & Web Site

ES6 / Rollup

Development workflow

- JavaScript
Published by cherniavskii almost 8 years ago

leaflet -

Bug fixes

  • Fix L.TileLayerregression, which caused incorrect tile URLs (#6006 by ghybs)

- JavaScript
Published by cherniavskii over 8 years ago

leaflet -

API changes

  • Add tolerance option to L.Renderer instead of hardcoded tolerance for touch devices (#5922 by Muscot).

Improvements

Bug fixes

Docs & Web Site

ES6 / Rollup

  • Tweak legacy option in rollup config - now Leaflet works in IE again (#5929 by IvanSanchez)
  • Remove warning alert in watch bundle (#5714 by perliedman)
  • New rollup config signature (#5812 by iH8)

- JavaScript
Published by cherniavskii over 8 years ago

leaflet -

Fixes non-extendable objects regression of 1.1.0 (#5658 by mourner)

For a detailed changes, see the full changelog

- JavaScript
Published by perliedman over 8 years ago

leaflet -

1.1.0 is a feature release. Changes since 1.0.3 are:

API changes

  • Add deprecation notice for L.Mixin.Events, fixes #5358 (#5365) (by perliedman)
  • Turn nonBubblingEvents into a documented boolean option (#4883 by IvanSanchez)
  • Add L.transformation factory, allow creation from array (#5282 by anetz89)
  • toGeoJSON methods now default to a precision of six decimals (as recommended in the GeoJSON spec), precision is settable through a method parameter (#5544 by mattgrande)

Docs & Web Site

ES6 / Rollup

Improvements

Bug fixes

- JavaScript
Published by perliedman almost 9 years ago

leaflet - v1.0.3

Leaflet 1.0.3 is a bugfix release. Changes since 1.0.2:

Bug fixes

API changes

  • Added a new WrapLatLngBounds method to L.CRS, to fix an issue with maxBounds of GridLayers (by @IvanSanchez, #5185, also thanks to @DiogoMCampos for investigation).
  • L.Map.getSize() will now return 0 instead of NaN in non-graphical environments (by @ughitsaaron, #5209).

Improvements

- JavaScript
Published by IvanSanchez over 9 years ago

leaflet - v1.0.2

Leaflet 1.0.2 is a small release with a dozen bugfixes and a couple small improvements. Changes since v1.0.1:

Bug fixes

  • Fix CSS for marker shadows when max-width is already set (by @brunob, #5046).
  • Fix canvas redraw when style updates fill and/or weight (by @perliedman, #5034).
  • Prevent canvas from firing multiple mouseover events for same layer (by @perliedman, #5033).
  • Fixed a race condition when removing and adding L.Canvas vectors during a zoom animation (by @ghybs) #5011.
  • Fix zoom animation of ImageOverlay when CRS's Y axis is flipped (by @perliedman), #4993.
  • Fix encoding/decoding of GeoJSON FeatureCollections (by @IvanSanchez), #5045.
  • Fix minZoom/maxZoom late inizialization (by @IvanSanchez), #4916.
  • Fix styling of custom SVG markers by making stricter CSS selectors (by @jwoyame) #4597.
  • Fix order of mouseover/mouseout events on overlapping L.Canvas layers (by @perliedman), #5090.
  • Fix drag behaviour when a draggable marker is removed in mid-drag (by @IvanSanchez, #5063.
  • Fix L.Control.Layers.collapse() on initially uncollapsed layer controls (by @perliedman), #5090.
  • Fix blurriness of L.Tooltip by rounding up pixel coordinates (by @ashmigelski), #5089.
  • Fix click events on overlapping geometries when using L.Canvas (by @perliedman), #5100.

API changes

Improvements

- JavaScript
Published by IvanSanchez over 9 years ago

leaflet - v1.0.1

Leaflet 1.0.1 is a small bugfix release, containing two bug fixes since the previous version: - Fixed vector rendering regression in IE8 (by @perliedman). #4656 - Fixed Webpack error when bundling Leaflet's CSS (by @jefbarn). #4679

- JavaScript
Published by IvanSanchez over 9 years ago

leaflet -

Leaflet 1.0 final, a culmination of several years of work by dozens of contributors from all over the world. This is the fastest, most stable and polished Leaflet release ever. Read the announcement blog post.

Changes since 1.0-rc3:

API changes

Improvements

Bug fixes

- JavaScript
Published by mourner over 9 years ago

leaflet - v1.0.0-rc.3

API changes

  • L.Tooltip offset option now defaults to [0, 0] (by @yohanboniface) #4773
  • Event listeners are now always called in the order they have been registered, while until rc2 listeners with a context were all called before listeners without context (even if registered later), and the listeners with context were called in an unpredictable order (by @yohanboniface) #4769

Improvements

Bug fixes

- JavaScript
Published by mourner almost 10 years ago

leaflet - v1.0.0-rc.2

API changes

Improvements

Bug fixes

  • Fixed GridLayer's outer edge snapping to vertical center of map (fix #4702) (by @yohanboniface) #4704
  • Fixed scrollwheel zoom too fast in MS Edge (by @IvanSanchez) #4694
  • Use pointer-events: visiblePainted as fallback for IE <11 (by @perliedman) #4690
  • Avoid double borders on abbr in website (by @brunob) #4663
  • Prevent firing map click when layer has popup (by @jwoyame) #4603
  • Disable pointer events on popup tip (by @jwoyame) #4599
  • Prevent L.DomUtil.create() from automatically setting a CSS class name (by @MuellerMatthew) #4563
  • Fix off-by-one bug in Control.Layers._getLayer (by @ValentinH) #4561
  • Fix scrollwheel events zomming two levelz in Chrome by scaling down getWheelDelta() (by @IvanSanchez) #4538
  • Prevent event listeners from being called when all listeners are removed (by @perliedman) #4555
  • Don't prevent browser's touch scroll and/or zoom unless handlers are enabled (by @perliedman) #4552
  • Fixed getBoundsZoom with small size and padding (by @dianjin) #4532
  • Fixed L.Control.Layers in IE8 (by @jieter) #4509
  • Fixed TileLayer's retina logic when zoomReverse is enabled. (by @perliedman) #4503
  • Fixed setMaxBounds not resetting maxBounds when passing null argument (by @yohanboniface) #4494
  • Fixed canvas not filtering click event after drag (by @yohanboniface) #4493
  • Fixed L.Control.removeLayer() raising an error when trying to remove a layer not yet added (by @jieter) #4487
  • Fixed disabling drag on click in IE11 (by @perliedman) #4479
  • Fixed L.Evented.listens() on removed event handlers, #4474 (by @IvanSanchez) #4476
  • Better handling of markerZoomAnimation event hooks (by @IvanSanchez) #4460

- JavaScript
Published by yohanboniface almost 10 years ago

leaflet - v1.0.0-rc.1

API changes

Improvements

Bug fixes

Other

- JavaScript
Published by yohanboniface about 10 years ago

leaflet - v0.7.7

  • Fixed a regression that could sometimes cause tiles to disappear when pinch-zooming on iOS devices.
  • Fixed a regression related to msPointer detection in IE10 (affecting Leaflet.draw and some other plugins) (by @danzel) #3842 #3839 #3804
  • Fixed a bug where a mouseout could fire after a vector element was removed (by @sambernet). #3849 #3829
  • Fixed touch interactions in Edge browser (by @mitchless & @Neorth). #3853 #3379
  • Fixed a bug where removing a layer group from a feature group would throw an error (by @Lambdac0re). #3869

Note that we skipped 0.7.6 version for which we accidentally published a broken build to NPM.

- JavaScript
Published by mourner over 10 years ago

leaflet -

- JavaScript
Published by mourner over 10 years ago

leaflet -

Beta 2 fixes over 50 bugs that were reported by users trying out beta 1. The vast majority of changes are small fixes to problems that are triggered in very specific situations or conditions, a few API consolidation changes, and a few browser workarounds.

API changes

  • L.circle now accepts radius as an option (like L.circleMarker) rather than a second argument (by @IvanSanchez)

Improvements

  • Implemented canvas optimizations on mousehover interactions (by @philippelatulippe) #3076
  • Improved drag behaviour by preventing a preclick event during drag (by @yohanboniface) #3632
  • Implemented L.ImageOverlay.setBounds() and fixed image overlay initialization (by @fminuti) #3680
  • Implemented draggable items to fire mousedown events (by @yohanboniface) #3682
  • Changed detection of browsers capable of msPointer events (by @IvanSanchez) #3684
  • Implemented latitude truncation for spherical mercator projection (by @perliedman) #3700
  • Armored against browsers not implementing Geolocation.clearWatch() #3707
  • Implemented generation of sourcemaps when building and minifying source files (by @IvanSanchez) #3723
  • Added bringToFront and bringToBack to popups (by @danzel). #3908 #3307
  • Multiply offset by 3 on keyboard pan when shift key is pressed (by @yohanboniface) #3921

Bug fixes

- JavaScript
Published by mourner over 10 years ago