==============
Django Leaflet
See the documentation <https://django-leaflet.readthedocs.io/en/latest/>
_ for more information.
django-leaflet allows you to use Leaflet <http://leafletjs.com>
_
in your Django <https://www.djangoproject.com>
_ projects.
It embeds Leaflet version 1.9.3.
.. image:: https://readthedocs.org/projects/django-leaflet/badge/?version=latest
:target: http://django-leaflet.readthedocs.io/en/latest/?badge=latest
:alt: Documentation Status
.. image:: https://img.shields.io/pypi/v/django-leaflet.svg
:target: https://pypi.python.org/pypi/django-leaflet
.. image:: https://img.shields.io/pypi/dm/django-leaflet.svg
:target: https://pypi.python.org/pypi/django-leaflet
.. image:: https://coveralls.io/repos/makinacorpus/django-leaflet/badge.png
:target: https://coveralls.io/r/makinacorpus/django-leaflet
Main purposes of having a python package for the Leaflet Javascript library :
- Install and enjoy ;
- Do not embed Leaflet assets in every Django project ;
- Enjoy geometry edition with Leaflet form widget ;
- Control apparence and settings of maps from Django settings (e.g. at deployment) ;
- Reuse Leaflet map initialization code (e.g. local projections) ;
:note:
*django-leaflet* is compatible with `django-geojson <https://github.com/makinacorpus/django-geojson.git>`_ fields, which
allow handling geographic data without spatial database.
=======
AUTHORS
Mathieu Leplatre <http://mathieu-leplatre.info>
_Ariel Núñez <http://ingenieroariel.com>
_Boris Chervenkov <https://github.com/boris-chervenkov>
_Marco Badan <https://github.com/itbabu>
_Bruno Renié <https://github.com/brutasse>
_Simon Thépot <https://github.com/djcoin>
_Thibault Jouannic <https://github.com/thibault>
_jnm <https://github.com/jnm>
_Manel Clos <https://github.com/manelclos>
_Gaël Utard <https://github.com/gutard>
_Alex Marandon <https://github.com/amarandon>
_ollb <https://github.com/ollb>
_smcoll <https://github.com/smcoll>
_jnm <https://github.com/jnm>
_OKso <https://github.com/oksome>
_Florent Lebreton <https://github.com/fle/>
_rgreenemun <https://github.com/rgreenemun>
_Marco Badan <https://github.com/itbabu>
_- David Martinez Morata
NotSqrt <https://github.com/NotSqrt>
_Dylan Verheul <https://github.com/dyve>
_Mactory <https://github.com/Mactory>
_Petr Dlouhy <https://github.com/PetrDlouhy>
_Kostya Esmukov <https://github.com/KostyaEsmukov>
_- Yann Fouillat (alias Gagaro)
|makinacom|_
.. |makinacom| image:: http://depot.makina-corpus.org/public/logo.gif
.. _makinacom: http://www.makina-corpus.com
=======
LICENSE
- Lesser GNU Public License
- Leaflet Copyright - 2010-2011 CloudMade, Vladimir Agafonkin
=========
CHANGELOG
0.31.0 (2024-10-14)
- Fix icon control.
- Fix JS error if with-forms does not exists #379 #380
- Support Django 5.1.
- Drop support for Django < 4.2.
- Avoid defining imgPathElement globally #384
- Remove forms dependency on 'extras' #385
- Pass with_forms to leaflet_draw_i18n template #387
0.30.1 (2024-06-17)
- Change OSM tile link to unified format #375
- Remove debug print added in #371 #377
- Removed obsolete leaflet-src.map file #376
0.30.0 (2024-05-13)
- Support Django 5.0 and Python 3.12 (
#373 <https://github.com/makinacorpus/django-leaflet/pull/373>
__). - Drop support for Python 3.7 (
#373 <https://github.com/makinacorpus/django-leaflet/pull/373>
__). - Make django-leaflet compatible with CSP #371 (This changes the way extra CSS is handled)
- Allow delete polygon when using multipolygon geometries #372
0.29.1 (2024-03-11)
- Upgrade embedded Leaflet to 1.9.3.
0.29.0 (2023-05-02)
- Support Django 4.0, 4.1 and 4.2, and Python 3.10 and 3.11.
- Drop support for Django < 3.2 and Python < 3.7.
- Removed map_width / map_height. Moved CSS and height/width to custom CSS file #363
0.28.3 (2022-06-08)
- Fix #346: distutils has been deprecated in Python 3.10.
- Change DEFAULT_TILES attribution to HTTPS #348
- Remove memoizing static URLs #351
0.28.2 (2021-10-25)
- Fix field_store_class usage in map template.
0.28.1 (2021-06-07)
- Upgrade Leaflet to 1.7.1.
- Deprecate 'LeafletWidget._get_attrs' in favor of 'LeafletWidget.get_attrs'
0.28.0 (2021-04-15)
- Support Django 3.1 and 3.2.
- Drop support for Django 1.11, 2.0, and 2.1.
- translate to persian #313
0.27.1 (2020-07-31)
- Replace link to geojsonlint.com with geojson.io. #298
0.27.0 (2020-07-03)
- Drop support for Django < 1.11 and Python 2
- Upgrade proj4js to 2.6.1 and Proj4Leaflet to 1.0.2 (#287)
- Update Czech translations, add Slovak translations #269
- Add Arabic translation #274
- Precision fixes #280 #291
- Display the map on mobile (Fixes #241) #292
- Updated Leaflet to 1.6.0
0.26.0 (2019-12-06)
0.25.0 (2019-10-18)
- #225 changes in staticfiles for django 1.11.14
- #247 Allow resizing of raw Geometry textbox input via CSS, improve label, add docs
- #108 Add examples to docs on adding overlays, customising maps in templates, admin and forms
- #248 Allow use of a custom widget in the Admin. (fixes #151)
- #261 Add request to formfield_for_dbfield signature; fix #260
- #262 Fix Missing staticfiles manifest entry for 'leaflet/images'
0.24.0 (2018-06-07)
0.23.0 (2017-11-28)
- Fix fatal bug with Django => 1.11.2 for non-GIS databases
- fixes #188 Better replace for icon image
- Add Russian translation
- Add Hungarian translation
- Allow storing global leaflet map instances
0.22.0 (2017-04-06)
- Set a default max zoom in leaflet.forms _setView to avoid an error.
- Fix the div ids to work with admin inlines.
- Django 1.11 compatibility
- Fix multipolyline/multipolygon and polyline/polygon not working
0.21.0 (2017-02-28)
- Update leaflet.draw and fix a packaging and a javascript bug
0.20.0 (2017-01-27)
New features
- Update Leaflet to 1.0.3 (#169)
- Update Leaflet-draw to 0.4.0 (#169)
- Update Proj4Leaflet to 1.0.0 (#169)
- Made
static
calls lazy, to fix issues with non-default STATICFILES_STORAGE (#149) - Add example application (#168)
Bug fixes
- Use SpatiaLite library path from environment variable for running test (#173)
- Fix max zoom level (#165)
- Add SPATIAL_EXTENT default value to the default settings (#167)
Many thanks to @KostyaEsmukov, @cleder, @sikmir and @seav for their contributions!
0.19.0 (2016-08-22)
New features
- Added
leaflet.admin.LeafletGeoAdminMixin
, useful for stacked or tabular
inline forms (thanks @KostyaEsmukov, @Xowap)
0.18.2 (2016-08-16)
- Fix compatibility with Django <= 1.7
0.18.1 (2016-04-07)
- If the TILES setting contains an empty list, no default tiles layer is generated (thanks @dyve).
- Fix to allow multipoints saving (fixes #130, thanks @rukayaj)
- Fix settings override (#142, thanks @ndufrane)
- Fix for templatetags.leflet_js debug setting (#148, thanks @arctelix)
- Fixes for Django 1.10 compatibility (#138, thanks @PetrDiouhy)
0.18.0 (2016-01-04)
New features
- Use a LazyEncoder to allow lazy translations in settings (#132, thanks @Mactory)
- Enable settings_overrides also for admin (fixes #120, thanks @PetrDiouhy)
- Add tests for Django 1.9 and Python 3.5 (thanks @itbabu)
Bug fixes
- Fix LeafletWidget behaviour on GeometryCollectionField (fixes #135)
0.17.1 (2015-12-16)
- Update Leaflet to 0.7.7
- Update Leaflet-draw to 0.2.4
- Fix rendering of leaflet widget when initial value is an empty string
0.17.0 (2015-11-11)
New features
- Pass relative URLs for static files through django.contrib.staticfiles (thanks @dyve, fixes #111)
- Allow to override settings at the template tag level (thanks @PetrDiouhy, fixes #59)
- Update Leaflet to 0.7.5 (@dyve)
- Add Czech locale (thanks @PetrDiouhy)
Bug fixes
- Fix interaction with django-geojson (#106, thanks @batisteo)
- Use protocol independant URLs in default OSM tiles (thanks @NotSqrt)
- Fix deprecated TEMPLATE_DEBUG (#121, thanks @josenaka)
- Fix errors with multi-word field names (#123, thanks @josemazo)
- Fix loadevent not being taken into account in forms (#127, thanks @josemazo)
0.16.0 (2015-04-17)
New features
- Add setting
FORCE_IMAGE_PATH
to bypass Leaflet guess on image paths
(useful when using django-compressor) (thanks @nimasmi) - Add Hebrew translations (thanks @nonZero)
- Map attribution can be translated using ugettext_lazy
Bug fixes
- Fix widgets hanging forever with points (thanks @Azimkhan, fixes #90)
- Remove setTimeout when calling setView() (thanks @manelclos, fixes #89)
- Fix minZoom/maxZoom when undefined in settings (thanks Manel Clos)
0.15.2 (2014-12-22)
- Allow to set any leaflet tileLayer option in
TILES
and OVERLAYS
settings (fixes #70).
0.15.1 (2014-12-04)
- Remove special characters in README (fixes #82)
- Fix translation in French (fixes #86)
- Fix es localization
0.15.0 (2014-10-24)
- Add ability to add overlay tile layers via new setting
OVERLAYS
.
0.14.2 (2014-10-24)
- Fix Django 1.7 support in tests (thanks Marco Badan)
- Add spanish translations (thanks David Martinez)
0.14.1 (2014-07-30)
- Fix draw events being received for each draw control on the map.
(Caution:
map.drawControl
attribute is not set anymore)
0.14.0 (2014-07-29)
- Fix GeoJSON serialization when creating new MultiPoint records
- Make the only layer match the map max/min_zoom (fixes #67) (thanks Manel Clos)
- Added widget attribute to edit several fields on the same map
0.13.7 (2014-06-26)
- Fix typo in default proj4js path (ref #71)
0.13.6 (2014-06-26)
- Setup Projection machinery in Leaflet forms if necessary
- Django Leaflet forms fiels without libgeos installed (thanks Florent Lebreton)
0.13.5 (2014-06-18)
- Prevent SRID download when default is used
0.13.4 (2014-06-13)
- Fix SRID projection file not being loaded
0.13.3 (2014-06-10)
0.13.2 (2014-04-15)
- Fix regression where maps have null as max zoom
0.13.1 (2014-04-10)
- Fix GEOS dependency, back as optional for geometry edition only (fixes #65)
- Add minZoom and maxZoom to map initialization
- Add support of advanced static files locations, like S3 (thanks @jnm)
0.13.0 (2014-03-26)
- Add support of Leaflet form fields on Django >= 1.4.2 (thanks GaÄŤl Utard)
0.12 (2014-03-22)
- Add support of GeoJSON fields
0.11.1 (2014-02-12)
- Do not complain about tile extent if SRID is 3857
0.11.0 (2014-02-07)
- Add control of
metric
and imperial
in SCALE
option (thanks @smcoll) - Upgrade to Leaflet.draw 0.2.3
0.10.1 (2014-02-03)
0.10.0 (2014-01-22)
- Python 3 support (thanks @itbabu)
- Added JavaScript test using Mocha
0.9.0 (2013-12-11)
- Upgrade to Leaflet 0.7.1
- Fix unsaved warning being always triggered on Internet Explorer.
- Added DE locale (thanks @rosscdh)
- Fix installation with python 2.6 (thanks @ollb)
0.8.5 (2013-11-05)
0.8.4 (2013-11-05)
- Fix regression in Django leaflet options serialization.
0.8.3 (2013-11-05)
- Switch to lazy gettext in leaflet module init.
0.8.2 (2013-10-31)
- Fix drawing of multi-polygon (fixes #37)
- Fix attached data for events with jQuery fallback (fixes #38)
- Fix Javascript syntax errors when using form prefixes (fixes #40)
0.8.1 (2013-09-30)
- Fix Leaflet library inclusion with "plugins=ALL" outside Admin.
- Do not include translations in every widgets outside Admin.
- Fix syntax error if form widget translations contains quotes.
- Fix dependency error if Leaflet is loaded after the form widget in the DOM.
- Respect plugins declaration order using OrderedDicts
- Prepend forms assets (instead of extend) if PLUGINS['forms'] already exists.
0.8.0 (2013-09-18)
- Renamed Leaflet map fragment template
- Leaflet map geometry widgets for adminsite and forms (requires Django 1.6)
- Fix geometry type restriction in form fields (fixes #32)
- Use jQuery for triggering events, only if CustomEvent constructor is not available (fixes #27, fixes #34)
0.7.4 (2013-08-28)
- Fix projection download error if not available
- Compute resolutions the same way TileCache does it, and provide
example of TileCache configuration.
- Raise ImproperlyConfigured if TILES_EXTENT is not portrait (since not supported)
0.7.3 (2013-08-23)
- Do not use console() to warn about deprecated stuff if not available (<IE9)
- Fix apparence of Reset view control for Leaflet 0.6
- Add French and Italian locales
0.7.2 (2013-08-23)
- Fix JS error when no callback value is provided.
0.7.1 (2013-08-21)
- Fix map initialization with default tiles setting
- Fix map
fitBounds()
to SPATIAL_EXTENT
in settings
0.7.0 (2013-08-21)
Breaking changes
-
The leaflet_map
template tag no longer registers initialization
functions in global scope, and no longer adds map objects into window.maps
array by default. Use LEAFLET_CONFIG['NO_GLOBALS'] = False
to
restore these features.
-
Initialization callback function no longer receives the map bounds
in second
argument, but the map options object.
Deprecated
-
JS default callback function ( Init() ) for map initialization is deprecated.
Use explicit callback
parameter in template tag, or listen to window event map:init
instead.
(See Use Leaflet API section in README.)
-
TILES_URL
entry in LEAFLET_CONFIG
is deprecated.
Use TILES
instead.
-
Settings lookup is restricted to LEAFLET_CONFIG
dict. Most notably,
SRID
, MAP_SRID
and SPATIAL_EXTENT
at global Django settings level
are discouraged.
New features
- Add ability to associate layers attributions from settings
- Add
auto-include
key for entries in PLUGINS
setting, in order
to implicity load plugins with leaflet_css
and leaflet_js
tags. - Rewrote map initialization, into less flexible and obstruvise way.
- Use plugin system for Leaflet.MiniMap.
- Add
loadevent
parameter to leaflet_map
tag. - Map initialization is now idempotent, does nothing if map is already initialized.
- Add
ATTRIBUTION_PREFIX
setting to control prefix globally.
0.6.0 (2013-08-08)
0.6.0a (2013-07-05)
- Upgrade to Leaflet 0.6.2
- Upgrade Leaflet.Minimap (rev 3cd58f7)
- Upgrade Proj4Leaflet (rev f4f5b6d)
0.5.1 (2013-04-08)
- Add minimap support
- Drop Leaflet version switching
- Update Leaflet to 0.5.1
- Update Leaflet.Minimap
- Fix apparence of Reset view button
0.4.1 (2012-11-05)
- Fix div creation test in template.
0.4.0 (2012-11-05)
- Remove imperial scale.
- Add
create_div
parameter
0.3.0 (2012-10-26)
- Remove max resolution setting since it can be computed
- Allow scale control even if view is not set
- Upgrade Leaflet to 0.4.5
0.2.0 (2012-09-22)
- Fix packaging of templates
- Use template for fragment
- Do not rely on spatialreference.org by default
- Default settings for SRID
- Default settings for map extent
- Default map height
- Default tiles base layer
- map variable is not global anymore
0.1.0 (2012-08-13)
- Initial support for map projection
- Show zoom scale by default
- Spatial extent configuration
- Initialization callback instead of global JS variable
- Leaflet version switching
- Global layers configuration
0.0.2 (2012-03-22)
0.0.1 (2012-03-16)