(all changes without author notice are by @mourner)
An in-progress version being developed on the master branch.
- Added configurable panning inertia - after a quick pan, the map slows down in the same direction.
- Added polyline and polygon editing. #174
- Added an unobtrusive scale control.
- Added
DivIcon
class that easily allows you to create lightweight div-based markers. - Added
Rectangle
vector layer (by @JasonSanford). #504
- Drag-panning now works even when there are markers in the starting point (helps on maps with lots of markers). #506
- Improved panning performance even more (there are no wasted frames now).
- Replaced box-shadow with border on controls for mobile devices to improve performance.
- Slightly improved default popup styling.
- Converted
Icon
properties (likeiconUrl
) to options, changed constructor signature toIcon(options)
. - Moved default marker icon options to
L.Icon.Default
class (which extends fromL.Icon
). - Improved
TileLayer
constructor to interpolate URL template values from options (removed thirdurlParams
argument). - Replaced ugly control position constants (e.g. L.Control.Position.TOP_LEFT) with light strings ('topleft', 'bottomright', etc.)
- Removed
Map
locateAndSetView
method (uselocate
withsetView: true
option) - Changed popup
minWidth
andmaxWidth
options to be applied to content element, not the whole popup. - Moved
prefix
argument tooptions
inControl.Attribution
constructor.
- Added
Icon
className
option to assign a custom class to an icon. - Added
Icon
shadowOffset
option to set the position of shadow relative to the icon. - Made all
Icon
options excepticonUrl
optional (if not specified, they'll be chosen automatically or implemented using CSS). Anchor is centered by default (if size is specified), and otherwise can be set through CSS using negative margins. - Added
originalEvent
property toMouseEvent
(by @k4). #521 - Added
Circle
getBounds
method. #440 - Added
Marker
opacity
option. - Added public
redraw
method to vector layers (useful if you manipulate theirLatLng
points directly). - Added
setPosition
andgetPosition
to all controls, as well as ability to pass certain position as an option when creating a control. - Added
Popup
maxHeight
option that makes content inside the popup scrolled if it doesn't fit the specified max height. - Made controls implementation easier (now more magic happens under the hood).
- Added
Map
containerPointToLatLng
andlatLngToContainerPoint
methods. #474 - Added
containerPoint
property toMouseEvent
. #413 - Added
LatLngBounds
pad
method that returns bounds extended by a percentage (by @jacobtoye). #492 - Added
contextmenu
event to vector layers (by @ErrorProne). #500 - Added chaining to
DomEvent
methods. - Added
Map
addHandler
method. - Moved dragging cursor styles from JS code to CSS.
- Improved
Marker
openPopup
not to raise an error if it doesn't have a popup. #507
- Fixed a regression where removeLayer would not remove corresponding attribution. #488
- Fixed a bug where popup close button wouldn't work on manually added popups. #423
- Fixed a bug where
TileLayer.WMS
wouldn't takeinsertAtTheBottom
option into account (by @bmcbride). #478 - Fixed a bug where marker click event would stop working if you dragged it and then disabled dragging. #434
- Fixed a bug where
TileLayer
setOpacity
wouldn't work when setting it back to 1. - Fixed a bug where vector layer
setStyle({stroke: false})
wouldn't remove stroke and the same for fill. #441 - Fixed a bug where
Marker
bindPopup
method wouldn't takeoffset
option into account.
- Fixed inability to use scrolled content inside popup due to mouse wheel propagation.
- Fixed a bug that caused jumping/stuttering of panning animation in some cases.
- Fixed a bug where popup size was calculated incorrectly in IE.
- Fixed a bug where cursor would flicker when dragging a marker.
- Fixed a bug with false map click events on pinch-zoom and zoom/layers controls click. #485
- Fixed a bug where touching the map with two or more fingers simultaneously would raise an error.
- Fixed a bug where zoom control wasn't always visible on Android 3. #335
- Fixed a regression where default marker icons wouldn't work if Leaflet include url contained a query string.
- Fixed a regression where tiles sometimes flickered with black on panning in iOS.
- Added Canvas backend for vector layers (polylines, polygons, circles). This enables vector support on Android < 3, and it can also be optionally preferred over SVG for a performance gain in some cases. Thanks to @florianf for a big part of this work.
- Added layers control (
Control.Layers
) for convenient layer switching. - Added ability to set max bounds within which users can pan/zoom. #93
- Map now preserves its center after resize.
- When panning to another copy of the world (that's infinite horizontally), map overlays now jump to corresponding positions. #273
- Limited maximum zoom change on a single mouse wheel movement (so you won't zoom across the whole zoom range in one scroll). #149
- Significantly improved line simplification performance (noticeable when rendering polylines/polygons with tens of thousands of points)
- Improved circles performance by not drawing them if they're off the clip region.
- Improved stability of zoom animation (less flickering of tiles).
- Added ability to add a tile layer below all others (
map.addLayer(layer, true)
) (useful for switching base tile layers). - Added
Map
zoomstart
event (thanks to @Fabiz). #377 - Improved
Map
locate
method, added ability to watch location continuously and more options. #212 - Added second argument
inside
toMap
getBoundsZoom
method that allows you to get appropriate zoom for the view to fit inside the given bounds. - Added
hasLayer
method toMap
. - Added
Marker
zIndexOffset
option to be able to set certain markers below/above others. #65 - Added
urlParams
third optional argument toTileLayer
constructor for convenience: an object with properties that will be evaluated in the URL template. - Added
TileLayer
continuousWorld
option to disable tile coordinates checking/wrapping. - Added
TileLayer
tileunload
event fired when tile gets removed after panning (by @CodeJosch). #256 - Added
TileLayer
zoomOffset
option useful for non-256px tiles (by @msaspence). - Added
TileLayer
zoomReverse
option to reverse zoom numbering (by @Majiir). #406 - Added
TileLayer.Canvas
redraw
method (by @mortenbekditlevsen). #459 - Added
Polyline
closestLayerPoint
method that's can be useful for interaction features (by @anru). #186 - Added
setLatLngs
method toMultiPolyline
andMultiPolygon
(by @anru). #194 - Added
getBounds
method toPolyline
andPolygon
(by @JasonSanford). #253 - Added
FeatureGroup
setStyle
method (also inherited byMultiPolyline
andMultiPolygon
). #353 - Added
FeatureGroup
invoke
method to call a particular method on all layers of the group with the given arguments. - Added
ImageOverlay
load
event. #213 - Added
minWidth
option toPopup
(by @marphi). #214 - Improved
LatLng
constructor to be more tolerant (and throw descriptive error if latitude or longitude can't be interpreted as a number). #136 - Added
LatLng
distanceTo
method (great circle distance) (by @mortenbekditlevsen). #462 - Added
LatLngBounds
toBBoxString
method for convenience (by @JasonSanford). #263 - Added
LatLngBounds
intersects(otherBounds)
method (thanks to @pagameba). #350 - Added
Bounds
intersects(otherBounds)
method. #461 - Added
L.Util.template
method for simple string template evaluation. - Added
DomUtil.removeClass
method (by @anru). - Added ability to pass empty imageUrl to icons for creating transparent clickable regions (by @mortenbekditlevsen). #460
- Improved browser-specific code to rely more on feature detection rather than user agent string.
- Improved superclass access mechanism to work with inheritance chains of 3 or more classes; now you should use
Klass.superclass
instead ofthis.superclass
(by @anru). #179
shiftDragZoom
map option/property renamed toboxZoom
.- Removed
mouseEventToLatLng
method (bringed back in 0.4).
- Build system completely overhauled to be based on Node.js, Jake, JSHint and UglifyJS.
- All code is now linted for errors and conformity with a strict code style (with JSHint), and wont build unless the check passes.
- Fixed a bug where
Circle
was rendered with incorrect radius (didn't take projection exagerration into account). #331 - Fixed a bug where
Map
getBounds
would work incorrectly on a date line cross. #295 - Fixed a bug where polygons and polylines sometimes rendered incorrectly on some zoom levels. #381
- Fixed a bug where fast mouse wheel zoom worked incorrectly when approaching min/max zoom values.
- Fixed a bug where
GeoJSON
pointToLayer
option wouldn't work in aGeometryCollection
. #391 - Fixed a bug with incorrect rendering of GeoJSON on a date line cross. #354
- Fixed a bug where map panning would stuck forever after releasing the mouse over an iframe or a flash object (thanks to @sten82). #297 #64
- Fixed a bug where mouse wheel zoom worked incorrectly if map is inside scrolled container (partially by @chrillo). #206
- Fixed a bug where it was possible to add the same listener twice. #281
- Fixed a bug where
Circle
was rendered with incorrect radius (didn't take projection exaggeration into account). #331 - Fixed a bug where
Marker
setIcon
was not working properly (by @marphi). #218 #311 - Fixed a bug where
Marker
setLatLng
was not working if it's set before adding the marker to a map. #222 - Fixed a bug where marker popup would not move on
Marker
setLatLng
(by @tjarratt). #272 - Fixed a bug where static properties of a child class would not override the parent ones.
- Fixed broken popup
closePopup
option (by @jgerigmeyer). - Fixed a bug that caused en error when dragging marker with icon without shadow (by @anru). #178
- Fixed a typo in
Bounds
contains
method (by @anru). #180 - Fixed a bug where creating an empty
Polygon
withnew L.Polygon()
would raise an error. - Fixed a bug where drag event fired before the actual movement of layer (by @anru). #197
- Fixed a bug where map click caused an error if dragging is initially disabled. #196
- Fixed a bug where map
movestart
event would fire after zoom animation. - Fixed a bug where attribution prefix would not update on
setPrefix
. #195 - Fixed a bug where
TileLayer
load
event wouldn't fire in some edge cases (by @dravnic). - Fixed a bug related to clearing background tiles after zooming (by @neno-giscloud & @dravnic).
- Fixed a bug that sometimes caused map flickering after zoom animation.
- Fixed a bug related to cleaning up after removing tile layers (by @dravnic). #276
- Fixed a bug that made selecting text in the attribution control impossible. #279
- Fixed a bug when initializing a map in a non-empty div. #278
- Fixed a bug where
movestart
didn't fire on panning animation. - Fixed a bug in Elliptical Mercator formula that affeted
EPSG:3395
CRS (by @Savvkin). #358
- Fixed occasional crashes on Mac Safari (thanks to @lapinos03). #191
- Fixed a bug where resizing the map would sometimes make it blurry on WebKit (by @mortenbekditlevsen). #453
- Fixed a bug that raised error in IE6-8 when clicking on popup close button. #235
- Fixed a bug with Safari not redrawing UI immediately after closing a popup. #296
- Fixed a bug that caused performance drop and high CPU usage when calling
setView
orpanTo
to the current center. #231 - Fixed a bug that caused map overlays to appear blurry in some cases under WebKit browsers.
- Fixed a bug that was causing errors in some Webkit/Linux builds (requestAnimationFrame-related), thanks to Chris Martens.
- Fixed a bug that caused an error when clicking vector layers under iOS. #204
- Fixed crash on Android 3+ when panning or zooming (by @florian). #137
- Fixed a bug on Android 2/3 that sometimes caused the map to disappear after zooming. #69
- Fixed a bug on Android 3 that caused tiles to shift position on a big map.
- Fixed a bug that caused the map to pan when touch-panning inside a popup. #452
- Fixed a bug that caused click delays on zoom control.
- Fixed regression that caused error in
TileLayer.Canvas
.
- Added WMS support (
TileLayer.WMS
layer). - Added different projections support, having
EPSG:3857
,EPSG:4326
andEPSG:3395
out of the box (throughcrs
option inMap
). Thanks to @Miroff & @Komzpa for great advice and explanation regarding this. - Added GeoJSON layer support.
- Improved panning performance in Chrome and FF considerably with the help of
requestAnimationFrame
. #130 - Improved click responsiveness in mobile WebKit (now it happens without delay). #26
- Added tap tolerance (so click happens even if you moved your finger slighly when tapping).
- Improved geolocation error handling: better error messages, explicit timeout, set world view on locateAndSetView failure. #61
- Added MultiPolyline and MultiPolygon layers. #77
- Added LayerGroup and FeatureGroup layers for grouping other layers.
- Added TileLayer.Canvas for easy creation of canvas-based tile layers.
- Changed
Circle
to be zoom-dependent (with radius in meters); circle of a permanent size is now calledCircleMarker
. - Added
mouseover
andmouseout
events to map, markers and paths; added mapmousemove
event. - Added
setLatLngs
,spliceLatLngs
,addLatLng
,getLatLngs
methods to polylines and polygons. - Added
setLatLng
andsetRadius
methods toCircle
andCircleMarker
. - Improved
LatLngBounds contains
method to acceptLatLng
in addition toLatLngBounds
, the same forBounds contains
andPoint
- Improved
LatLngBounds
&Bounds
to allow their instantiation without arguments (by @snc). - Added TMS tile numbering support through
TileLayer
scheme: 'tms'
option (by @tmcw). - Added
TileLayer
noWrap
option to disable wrappingx
tile coordinate (by @jasondavies). - Added
opacity
option andsetOpacity
method toTileLayer
. - Added
setLatLng
andsetIcon
methods toMarker
. - Added
title
option toMarker
. - Added
maxZoom
argument tomap.locateAndSetView
method. - Added ability to pass Geolocation options to map
locate
andlocateAndSetView
methods (by @JasonSanford). - Improved
Popup
to accept HTML elements in addition to strings as its content.
- Added
Makefile
for buildingleaflet.js
on non-Windows machines (by @tmcw). - Improved
debug/leaflet-include.js
script to allow using it outside ofdebug
folder (by @antonj). - Improved
L
definition to be compatible with CommonJS. #122
- Fixed a bug where zooming is broken if the map contains a polygon and you zoom to an area where it's not visible. #47
- Fixed a bug where closed polylines would not appear on the map.
- Fixed a bug where marker that was added, removed and then added again would not appear on the map. #66
- Fixed a bug where tile layer that was added, removed and then added again would not appear on the map.
- Fixed a bug where some tiles would not load when panning across the date line. #97
- Fixed a bug where map div with
position: absolute
is reset torelative
. #100 - Fixed a bug that caused an error when trying to add a marker without shadow in its icon.
- Fixed a bug where popup content would not update on
setContent
call. #94 - Fixed a bug where double click zoom wouldn't work if popup is opened on map click
- Fixed a bug with click propagation on popup close button. #99
- Fixed inability to remove ImageOverlay layer.
- Fixed a bug where paths would not appear in IE8.
- Fixed a bug where there were occasional slowdowns before zoom animation in WebKit. #123
- Fixed incorrect zoom animation & popup styling in Opera 11.11.
- Fixed popup fade animation in Firefox and Opera.
- Fixed a bug where map isn't displayed in Firefox when there's an
img { max-width: 100% }
rule.
- Fixed a bug that prevented panning on some Android 2.1 (and possibly older) devices. #84
- Disabled zoom animation on Android by default because it's buggy on some devices (will be enabled back when it's stable enough). #32
- Fixed a bug where map would occasionally break while multi-touch-zooming on iOS. #32
- Fixed a bug that prevented panning/clicking on Android 3 tablets. #121
- Fixed a bug that prevented panning/clicking on Opera Mobile. #138
- Fixed potentional memory leak on WebKit when removing tiles, thanks to @Scalar4eg. #107
Initial Leaflet release.