:leaves: JavaScript library for mobile-friendly interactive maps

Overview

Leaflet

Leaflet is the leading open-source JavaScript library for mobile-friendly interactive maps. Weighing just about 39 KB of gzipped JS plus 4 KB of gzipped CSS code, it has all the mapping features most developers ever need.

Leaflet is designed with simplicity, performance and usability in mind. It works efficiently across all major desktop and mobile platforms out of the box, taking advantage of HTML5 and CSS3 on modern browsers while being accessible on older ones too. It can be extended with a huge amount of plugins, has a beautiful, easy to use and well-documented API and a simple, readable source code that is a joy to contribute to.

For more info, docs and tutorials, check out the official website.
For Leaflet downloads (including the built master version), check out the download page.

We're happy to meet new contributors. If you want to get involved with Leaflet development, check out the contribution guide. Let's make the best mapping library that will ever exist, and push the limits of what's possible with online maps!

Build Status

Comments
  • Support for Offline Tilelayer i.e. MbTiles

    Support for Offline Tilelayer i.e. MbTiles

    I am using Leaflet with QuickConnect (ioS), Xcode and JQTouch and trying to implement vector layers render using Spatialite thru leaflet vector polylines function.

    However, I hope leaflet can support MbTiles (Mapbox tiles) soon for offline maps.

    Details on openlayers and MbTiles off here. http://stackoverflow.com/questions/5569474/what-to-do-with-mbutil-export-for-tilemill-and-mapbox

    Snippet of implementation in Openlayers MbTiles,

    e.g. mydirectory is local directory in Xcode

    The URL of a tile is http://localhost/1.0.0/mydirectory/0/0/0.png, you'd have

    var layer = new OpenLayers.Layer.TMS( "MapBox Layer", [ "http://localhost/" ], { 'layername': 'mydirectory', 'type': 'png' } );

    Thanks.

    opened by ns-1m 99
  • L.Icon.Default brings a wrong image url

    L.Icon.Default brings a wrong image url

    • [ x] I'm reporting a bug, not asking for help
    • [ ] I've looked at the documentation to make sure the behaviour is documented and expected
    • [x ] I'm sure this is a Leaflet code issue, not an issue with my own code nor with the framework I'm using (Cordova, Ionic, Angular, React…)
    • [ ] I've searched through the issues to make sure it's not yet reported

    The image url leaflet prsents me is https://uismedia.geo-info-manager.com/apis/leaflet_1/imagesmarker-icon-2x.png. It seems there is a missing "/" Additionally i have an error leaflet.min.js:5 GET https://uismedia.geo-info-manager.com/apis/leaflet_1/images/ 403 (Forbidden)

    compatibility 
    opened by ArminMueller 90
  • Scrollwheel Zoom issue in Chrome

    Scrollwheel Zoom issue in Chrome

    I have noticed since updating to the newest leaflet version that all of my scroll wheel zooms are now jumping 2 zoom levels in chrome instead of one every time I use my scroll wheel.

    The issue appears to be the result of using a default value of '50' for wheelPxPerZoomLevel to control zoom speed, while using a normalized getWheelDelta function which converts your scroll wheel data to a standardized value. In Chrome my getWheelDelta function is returning 100 for a single scroll on the scroll wheel while firefox only returns 50

    blocker bug 
    opened by MuellerMatthew 70
  • Animations 2.0 (fractional zoom, pyramid tiles & zoomPanTo)

    Animations 2.0 (fractional zoom, pyramid tiles & zoomPanTo)

    • Pyramid tiles make animations with tiles much more pleasant and open the road for things like zoomPanTo.
    • Optimal path animation (map.zoomPanTo) animates smoothly between two locations no matter how distant they are through the shortest zoom-pan curve. #1413
    • Fractional zoom support for GridLayer makes Leaflet work smoothly with non-rounded zooms like 13.57, scaling tile layers from round zooms when necessary. #607 #1941 #1309 #1934

    Pyramid tile loading and animation

    • [x] implement basic pyramid loading & animation
    • [x] discard zoom levels when not used
    • [x] implement pyramid tile management so that unnecessary tiles are removed in time for performance

    Easey-style zoomPanTo (optimal path zoom animations)

    • [x] have a basic animation loop through center/zoom values working (without intermediary tiles loading yet)
    • [x] implement curved Easey-style zoomPanTo
    • [x] add easing other than linear
    • [x] tweak zoomPanTo duration and add options
    • [ ] make sure events (zoom/zoomstart/zoomend, move/movestart/moveend) are fired correctly during zoomPanTo
    • [x] make zooming animations stoppable (just like panning)
    • [x] fix buggy scroll wheel zooming while zoomPanTo

    Fractional zoom support

    • [x] make fractional zoom working in GridLayer so that it loads tiles from a round zoom and scales the layer with CSS Transform as it would do when animating
    • [x] fix fractional zoom wrapping/bounding
    • [x] clean up fractional zoom changes
    • [x] fix interactions to zoom in/out to the nearest round zoom instead of +/-1
    • [x] add an option to not animate to the nearest round zoom on pinch-zoom on mobile
    opened by mourner 70
  • Map freezes on Android 4.1.1 Samsung Galaxy Note2

    Map freezes on Android 4.1.1 Samsung Galaxy Note2

    When pinch-to-zoom the map freezes with the enlarged tiles shown, no new tiles are loaded and the map can't be moved after. Zooming via the buttons with activated animations also freezes the map. This is reproducable for versions 0.4.4 and 0.5.

    I think the problem is somehow related to the css3 animations. Disabling all animations and disabling pinch-to-zoom by manually setting the L.Browser.android23=true, fixes the freeze.

    First thought was, that the transitionEnd standard event isn't fired correctly, but the problem persists when using the webkit specific events (browser seems to support unprefixed events, but in our code transitionEnd wasn't fired, but webkitTransitionEnd was).

    Interestingly everything works fine in stock Android 4.0.3 / CyanogenMod on a Samsung Galaxy S phone.

    blocker 
    opened by florianf 67
  • rotation of map and contents to x degress.

    rotation of map and contents to x degress.

    Hi,

    I have been using this on the iphone as a great mapping api for offline maps ... it rocks ...

    I'm keen to extend the library to allow a method to be called to do a transformation of the map and it's contents (using the power of webkit ) to point north (assuming the user is using a phone with a compass api) ... i.e.

    -webkit-transform: rotate(12deg);

    can someone point me in the right direction where i should start ... or if this is a future feature ...

    Cheers coomsie

    p.s. sorry if this is the wrong place to place new features requests ...

    opened by coomsie 66
  • Changing to an unsupported tile provider zoom level removes all tiles and reports a load of errors

    Changing to an unsupported tile provider zoom level removes all tiles and reports a load of errors

    screen shot 2013-08-04 at 4 14 10 am

    Would be nice to have an option to cap tile layer url zoom without screwing up the coordinates and still see the CSS3 zooming while pinching and animating. Will also result in fewer requests if I can specify that no tiles have decimal zoom levels.

    EDIT: This is a really bad description, refer to the one below: https://github.com/Leaflet/Leaflet/issues/1934#issuecomment-22192219

    opened by thomaslindstrom 65
  • Leaflet 1.7.1 causes 2 click events to be emitted by Leaflet Controls in Safari

    Leaflet 1.7.1 causes 2 click events to be emitted by Leaflet Controls in Safari

    Steps to reproduce Steps to reproduce the behavior:

    • set up a basic map, with a control that has a button in it, which listens for click events and posts the events to the console
    • click the button in the control using Safari on a Mac
    • see two click events in the console, one with isTrusted:true and another with isTrusted:false attributes

    (Using 'force touch' to click the button on a trackpad results in only a single click event being emitted, but it also triggers the Safari preview popup.)

    Expected behavior

    There should only be one click event emitted, with the isTrusted:true attribute.

    Would Leaflet be able to safely filter out the click events with isTrusted:false?

    Current behavior

    In version 1.6 the expected behaviour is observed. In version 1.7.1 Chrome exhibits the expected behaviour, but Safari doesn't.

    The differences between the two events are included below.

    MouseEvent 1:

    MouseEvent
    
    _simulated: true
    composed: false
    isTrusted: false
    layerX: 15
    layerY: 28
    offsetX: 15
    offsetY: 28
    pageX: 410
    pageY: 46
    screenX: 1390
    screenY: 189
    timeStamp: 499337
    webkitForce: 0
    x: 410
    y: 38
    

    MouseEvent 2:

    MouseEvent
    
    composed: true
    isTrusted: true
    layerX: 15
    layerY: 20
    offsetX: 15
    offsetY: 20
    pageX: 410
    pageY: 38
    screenX: 1390
    screenY: 189
    timeStamp: 538265
    webkitForce: 1
    x: 410
    y: 38
    

    _simulated, composed, isTrusted and perhaps webkitForce seem to be the key differences, but it also seems odd that there are different timestamps and Y dimensions between the two events.

    Environment

    • Leaflet version: 1.7.1
    • Browser (with version): Safari 13.1.2
    • OS/Platform (with version): OS X 10.13.6 and 10.15.6

    Additional context

    I noticed this after OpenStreetMap updated to the latest version of Leaflet, where the issue manifests itself by preventing some of the map tools to be used as the first event toggles a tool on and the second toggles it off. Related issue posted at https://github.com/openstreetmap/openstreetmap-website/issues/2811

    Minimal example reproducing the issue

    Please see https://codepen.io/dankarran/pen/JjXMXzd

    bug compatibility 
    opened by dankarran 63
  • Map tiles not loading until a zoom is executed

    Map tiles not loading until a zoom is executed

    After updating to Leaflet 0.8-dev, my tiles are not loading smoothly. The initial map is missing one tile it appears and when I change to other tile layers with the layer control, I end up with a completely blank map. No errors in the console. If I zoom though, the tiles refresh and all of them load. See attached screenshots. screenshot at nov 06 14-40-53 screenshot at nov 06 14-41-18

    bug projections 
    opened by rwwagner90 61
  • Custom Panes and Pane Management

    Custom Panes and Pane Management

    It would be excellent to be able to create/delete/manage custom map panes and then be able to specify which panes your layers get added to. This would allow fine tuned control over css changes to groups of layers at once, allow you to solve z-index issues, and this would even be an excellent solution for #1734.

    What has brought about this, is that I use a lot of SVG objects on my map application. There are certain svg elements that I want to be above others all the time (with regards to z-index). However svg elements don't use z-index, and instead the elements added to the DOM last are the ones shown on top. The problem is that I add and remove a lot of the SVG elements to the map during normal usage of the mapping application. So this constantly changes which SVG elements are on top all the time.

    Custom map panes would solve this problem and give the user a LOT more fine tuned control over their groups of layers and how they are displayed and interacted with.

    Any thoughts on this?

    feature 
    opened by Jakobud 58
  • Map freeze problem, but unlocks after marker click

    Map freeze problem, but unlocks after marker click

    Hello

    I'm using leaflet 0.7.2 in a windows RT application, developed with the use of the WinJS library. I'm also using angularjs as the basis for the application. The map freezes 1/20 times when i zoom in or out. When i press a marker on the map, the map unfreezes and becomes responsive once more. When i use the leaflet-src and debug the problem i notice, that when the problem occurs the "_catchTransitionEnd" isn't called. When i press a marker the "_catchTransitionEnd" is called and the map unfreezes. Does anyone know what is causing this problem, and better still how to fix it? a quick workaround would be great, because of the deadline i'm on.

    Any help would be greatly appreciated.

    Thanks in advance

    Ian

    blocker 
    opened by iandeherdt 51
  • Bump rollup from 3.9.0 to 3.9.1

    Bump rollup from 3.9.0 to 3.9.1

    Bumps rollup from 3.9.0 to 3.9.1.

    Release notes

    Sourced from rollup's releases.

    v3.9.1

    3.9.1

    2023-01-02

    Bug Fixes

    • Sort keys in generated dynamic namespace objects (#4780)
    • Do not consider Array.group to be side effect free as the specs have changed (#4779)

    Pull Requests

    Changelog

    Sourced from rollup's changelog.

    3.9.1

    2023-01-02

    Bug Fixes

    • Sort keys in generated dynamic namespace objects (#4780)
    • Do not consider Array.group to be side effect free as the specs have changed (#4779)

    Pull Requests

    Commits

    Dependabot compatibility score

    You can trigger a rebase of this PR by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Bump husky from 8.0.2 to 8.0.3

    Bump husky from 8.0.2 to 8.0.3

    Bumps husky from 8.0.2 to 8.0.3.

    Release notes

    Sourced from husky's releases.

    v8.0.3

    • fix: add git not installed message #1208
    Commits

    Dependabot compatibility score

    You can trigger a rebase of this PR by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Getting a distorted map near China region from the leaflet library

    Getting a distorted map near China region from the leaflet library

    Checklist

    • [X] I've looked at the documentation to make sure the behavior isn't documented and expected.
    • [X] I'm sure this is an issue with Leaflet, not with my app or other dependencies (Angular, Cordova, React, etc.).
    • [X] I've searched through the current issues to make sure this hasn't been reported yet.
    • [X] I agree to follow the Code of Conduct that this project adheres to.

    Steps to reproduce

    https://ecn.t3.tiles.virtualearth.net/tiles/r132211.jpeg?g=13219&mkt=en-US&shading=hill

    https://ecn.t1.tiles.virtualearth.net/tiles/r132302.jpeg?g=13219&mkt=en-US&shading=hill

    https://ecn.t0.tiles.virtualearth.net/tiles/r132300.jpeg?g=13219&mkt=en-US&shading=hill

    The above links provide the tiles which combines together to form the map.

    Expected behavior

    Expected behavior is to get a a clear map.

    Current behavior

    Receiving distorted map near China region.

    Minimal example reproducing the issue

    No response

    Environment

    • Leaflet version: "1.0.0-rc.2+e02b5c9"
    • Browser (with version): Mozilla Firefox
    • OS/Platform (with version): Windows 10 Enterprise
    bug needs more info needs triage 
    opened by recursivecurse 1
  • Fix rounding errors in center calculation for small layers

    Fix rounding errors in center calculation for small layers

    For small areas, the center was to far away of the layer. It looks like the reason are rounding errors (Thx to turf.js for the idea: https://github.com/Turfjs/turf/blob/master/packages/turf-center-of-mass/index.ts#L39). But this solution doesn't work good for normal / larger areas, so I added a check if the area of the bounds are small then 1700 it using the rounding preventing solution.

    To solve this I needed to add the new function PolyUtil.centroid.

    This needs merged in the main banche too.

    error: grafik

    fixed: grafik

    L.polygon([[42.87097909758862, -81.12594320566181], [42.87108302016597, -81.12594320566181], [42.87108302016597, -81.12576504805303], [42.87097909758862, -81.12576504805303]]).addTo(map);
    

    Fixes #8783

    PS: I also cleaned up some unnecessary tests.

    bug 
    opened by Falke-Design 0
  • Tooltip anchor locations are incorrect for small GeoJSON polygons in 1.9.x

    Tooltip anchor locations are incorrect for small GeoJSON polygons in 1.9.x

    Checklist

    • [X] I've looked at the documentation to make sure the behavior isn't documented and expected.
    • [X] I'm sure this is an issue with Leaflet, not with my app or other dependencies (Angular, Cordova, React, etc.).
    • [X] I've searched through the current issues to make sure this hasn't been reported yet.
    • [X] I agree to follow the Code of Conduct that this project adheres to.

    Steps to reproduce

    This JSFiddle Illustrates the problem well: https://jsfiddle.net/michaelthoreau/ekafvph8/6/

    This issue seems to only affect geojson polygons that are geographically small, regardless of pixel size when drawn.

    Expected behavior

    Both tooltips should appear centered on the polygons.

    Current behavior

    The smaller polygon's tooltip appears in the wrong position. This behaviour does not appear in [email protected].

    Minimal example reproducing the issue

    https://jsfiddle.net/michaelthoreau/ekafvph8/6/

    Environment

    • Leaflet version: 1.9.3
    • Browser (with version): 108.0.5359.124 (Official Build) (arm64)
    • OS/Platform (with version): Mac OS 12.6
    bug 
    opened by michaelthoreau 0
Releases(v1.9.3)
  • v1.9.3(Nov 18, 2022)

    🙌 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

    Source code(tar.gz)
    Source code(zip)
    leaflet.zip(669.49 KB)
  • v1.9.2(Oct 4, 2022)

    🐞 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

    Source code(tar.gz)
    Source code(zip)
    leaflet.zip(667.61 KB)
  • v1.9.1(Sep 23, 2022)

  • v1.9.0(Sep 22, 2022)

    ⚡ 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

    Source code(tar.gz)
    Source code(zip)
    leaflet.zip(669.90 KB)
  • v1.8.0(Apr 18, 2022)

    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

    Source code(tar.gz)
    Source code(zip)
    leaflet.zip(652.07 KB)
  • v1.8.0-beta.3(Apr 4, 2022)

    🐞 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)

    Source code(tar.gz)
    Source code(zip)
  • v1.8.0-beta.1(Mar 26, 2022)

    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

    Source code(tar.gz)
    Source code(zip)
  • v1.8.0-beta.0(Mar 9, 2022)

  • v1.7.1(Sep 4, 2020)

    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

    Source code(tar.gz)
    Source code(zip)
  • v1.6.0(Nov 17, 2019)

    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

    Source code(tar.gz)
    Source code(zip)
  • v1.5.1(May 8, 2019)

  • v1.5.0(May 8, 2019)

    API changes

    Improvements

    Bug fixes

    Docs & Web Site

    Development workflow

    • Update dev dependencies & remove coverage scripts (#6635 by mourner)
    Source code(tar.gz)
    Source code(zip)
  • v1.4.0(Dec 30, 2018)

    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

    Source code(tar.gz)
    Source code(zip)
  • v1.3.4(Aug 21, 2018)

    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

    Source code(tar.gz)
    Source code(zip)
  • v1.3.3(Jul 18, 2018)

  • v1.3.2(Jul 17, 2018)

    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

    Source code(tar.gz)
    Source code(zip)
  • v1.3.1(Jan 18, 2018)

  • v1.3.0(Jan 15, 2018)

    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)
    Source code(tar.gz)
    Source code(zip)
  • v1.2.0(Oct 25, 2017)

  • v1.1.0(Jun 27, 2017)

    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

    Source code(tar.gz)
    Source code(zip)
  • v1.0.3(Jan 23, 2017)

    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

    Source code(tar.gz)
    Source code(zip)
  • v1.0.2(Nov 21, 2016)

    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

    Source code(tar.gz)
    Source code(zip)
  • v1.0.1(Sep 30, 2016)

  • v1.0.0(Sep 27, 2016)

    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

    Source code(tar.gz)
    Source code(zip)
  • v1.0.0-rc.3(Aug 5, 2016)

    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

    Source code(tar.gz)
    Source code(zip)
  • v1.0.0-rc.2(Jul 18, 2016)

    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
    Source code(tar.gz)
    Source code(zip)
  • v1.0.0-rc.1(Apr 18, 2016)

    API changes

    Improvements

    Bug fixes

    Other

    Source code(tar.gz)
    Source code(zip)
  • v0.7.7(Oct 26, 2015)

    • 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.

    Source code(tar.gz)
    Source code(zip)
  • v1.0.0-beta.2(Oct 14, 2015)

    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

    Source code(tar.gz)
    Source code(zip)
A simple web extension that redirects Twitter, YouTube, Instagram & Google Maps requests to privacy friendly alternatives.

Get Donate FIRO aEyKPU7mwWBYRFGoLiUGeQQybyzD8jzsS8 BTC: 3JZWooswwmmqQKw5iW6AYFfK5gcWTrvueE ETH: 0x90049dc59365dF683451319Aa4632aC61193dFA7 About A web

Simon Brazell 1.6k Dec 29, 2022
Interactive, thoroughly customizable maps in the browser, powered by vector tiles and WebGL

Mapbox GL JS is a JavaScript library for interactive, customizable vector maps on the web. It takes map styles that conform to the Mapbox Style Specif

Mapbox 9.4k Jan 7, 2023
An open-source JavaScript library for world-class 3D globes and maps :earth_americas:

CesiumJS is a JavaScript library for creating 3D globes and 2D maps in a web browser without a plugin. It uses WebGL for hardware-accelerated graphics

Cesium 9.7k Dec 26, 2022
An open-source JavaScript library for world-class 3D globes and maps :earth_americas:

CesiumJS is a JavaScript library for creating 3D globes and 2D maps in a web browser without a plugin. It uses WebGL for hardware-accelerated graphics

Cesium 9.7k Jan 3, 2023
AngularJS directive to embed an interact with maps managed by Leaflet library

Angular Leaflet Why the fork? While we are grateful for all the original work at tombatossals/angular-leaflet-directive. We need to be able to operate

AngularUI 313 Nov 10, 2022
UNMAINTAINED Open source JavaScript renderer for Kartograph SVG maps

This project is not maintained anymore. Here are a few reasons why I stopped working on kartograph.js: there's no need to support non-SVG browsers any

null 1.5k Dec 11, 2022
the easiest way to use Google Maps

Important If you're developer, I'm moving gmaps.js to NPM, you can give your opinion and check the migration progress in Issue #404 gmaps.js - A Javas

Gustavo Leon 7.1k Dec 28, 2022
the easiest way to use Google Maps

Important If you're developer, I'm moving gmaps.js to NPM, you can give your opinion and check the migration progress in Issue #404 gmaps.js - A Javas

Gustavo Leon 7.1k Apr 7, 2021
This is a collection of over two hundred code samples an growing for the Bing Maps V8 web control.

Bing Maps V8 Code Samples This is a collection of over a hundred code samples for the Bing Maps V8 web control. These samples have been collected from

Microsoft 130 Dec 8, 2022
This project contains the TypeScript definitions for the Bing Maps V8 Web Control.

Bing Maps V8 TypeScript Definitions These are the official TypeScript definitions for the Bing Maps V8 Web Control. These can be used to provide intel

Microsoft 35 Nov 23, 2022
React components for Leaflet maps

React Leaflet React components for Leaflet maps. Documentation Getting started API reference Changes See the CHANGELOG file. Contributing See the CONT

Paul Le Cam 4.4k Jan 3, 2023
Vue 2 components for Leaflet maps

Vue2Leaflet Vue2Leaflet is a JavaScript library for the Vue framework that wraps Leaflet making it easy to create reactive maps. How to install npm in

Vue Leaflet 1.9k Dec 29, 2022
Converts geojson to svg string given svg viewport size and maps extent.

geojson2svg Converts geojson to svg string given svg viewport size and maps extent. Check world map, SVG scaled map and color coded map examples to de

Gagan Bansal 163 Dec 17, 2022
Downloads satellite images from Google Maps, only slightly illegal.

Google Maps Satellite Downloader This is a script to download satellite images from Google Maps. The below mentioned optimization system requires that

null 5 Oct 31, 2022
An online tool to generate and visualize maps for irregular and/or gapped LED layouts, for use with FastLED, Pixelblaze and other libraries.

An online tool to generate and visualize maps for irregular and/or gapped LED layouts, for use with FastLED, Pixelblaze and other libraries.

Jason Coon 172 Dec 8, 2022
🖼️ Create beautiful maps from OpenStreetMap data in a webapp

prettymapp ??️ Prettymapp is a webapp to create beautiful maps from OpenStreetMap data (based on prettymaps) ?? Try it out here: prettymapp on streaml

Christoph Rieke 233 Jan 3, 2023
Dashboards-maps is a frontend plugin that helps you in uploading custom GeoJSON to OpenSearch and communicates with the geospatial backend plugin for the same.

Welcome! Project Resources Code of Conduct License Copyright Dashboards-Maps Dashboards-maps is a frontend plugin that helps you in uploading custom G

null 9 Dec 28, 2022
React friendly API wrapper around MapboxGL JS

react-map-gl | Docs react-map-gl is a suite of React components designed to provide a React API for Mapbox GL JS-compatible libraries. More informatio

Vis.gl 6.9k Jan 2, 2023
Greasemonkey script to allow marking items on the interactive map of Elden Ring as completed.

Greasemonkey script (or Tampermonkey) to allow marking items on the interactive map of Elden Ring as completed. The interactive map is a Fextralife-project, all credits for the map go to them.

Daniel Tischner 6 Jun 19, 2022