Skip to main content

Django-Mapengine

django-mapengine is a Django app to provide library for maplibre in backend. This includes

  • html templates and JS files for maplibre
  • creation of maplibre sources and layers including choropleths,
  • provision of multi-vector-tiles from django models,
  • distilling of map source views
  • basic popups

Requirements

Maplibre must be installed (i.e. via npm) and provided as JS framework

Quick start

  1. Add "django_mapengine" to your INSTALLED_APPS setting like this:

    INSTALLED_APPS = [
         "...",
         'django_mapengine',
    ]
    
  2. Install maplibre-gl and pubsub-js dependencies by:

    npm install maplibre-gl pubsub-js
    

    and copy JS and CSS to your static folder.

  3. Include URLs from django_mapengine to your project:

    urlpatterns = [
        "...",
        path("map/", include("django_mapengine.urls")),
    ]
    
  4. Configure map engine by setting zoom levels, regions and styles folder in project settings.py. You can see all possible settings by looking into django_mapengine.settings.py. Example settings:

    from django_mapengine import setup
    
    MAP_ENGINE_CENTER_AT_STARTUP = [12.537917858911896, 51.80812518969171]
    MAP_ENGINE_ZOOM_AT_STARTUP = 9
    MAP_ENGINE_MAX_BOUNDS = [[11.280733017118229, 51.22918643452503], [13.616574868700604, 52.35515806663738]]
    
    MAP_ENGINE_IMAGES = [setup.MapImage("wind", "images/icons/i_wind.png")]
    
    MAP_ENGINE_API_MVTS = {
        "municipality":
            [
                setup.MVTAPI("municipality", "map", "Municipality"),
                setup.MVTAPI("municipalitylabel", "map", "Municipality", "label_tiles"),
            ],
        "results": [setup.MVTAPI("results", "map", "Municipality")]
    }
    
    MAP_ENGINE_API_CLUSTERS = [
        setup.ClusterAPI("wind", "map", "WindTurbine"),
        setup.ClusterAPI("pvroof", "map", "PVroof"),
        setup.ClusterAPI("pvground", "map", "PVground"),
        setup.ClusterAPI("hydro", "map", "Hydro"),
        setup.ClusterAPI("biomass", "map", "Biomass"),
        setup.ClusterAPI("combustion", "map", "Combustion"),
    ]
    
    MAP_ENGINE_STYLES_FOLDER = "digiplan/static/config/"
    MAP_ENGINE_POPUPS = ["results"]
    
  5. Add middleware to your middleware setup before Whitenoise middleware (or other static server middleware):

    MIDDLEWARE = [
        "django.middleware.security.SecurityMiddleware",
        "django_mapengine.middleware.MapEngineMiddleware",
        "whitenoise.middleware.WhiteNoiseMiddleware",
        ...
    ]
    
  6. Create a TemplateView in views.py using views.MapEngineMixin. This will add all data needed for map setup to the view context:

    from django.views.generic import TemplateView
    from django_mapengine.views import MapEngineMixin
    
    
    class MapView(TemplateView, MapEngineMixin):
        """View to show a map generated by django-mapengine."""
    
        template_name = "map.html"
    
  7. Add maplibre-gl, pubsub-js and mapengine JS, CSS and JSONs in template by:

    {% block javascript %}
      {{ block.super }}
      {% compress js %}
        <script src="{% static 'vendors/maplibre/js/maplibre-gl.js' %}"></script>
        <script src="{% static 'vendors/pubsub/js/pubsub.js' %}"></script>
      {% endcompress %}
    {% endblock javascript %}
    
    {%  block inline_javascript %}
      {% include 'django_mapengine/map_json.html' %}
      {% compress js %}
        {% include 'django_mapengine/map_js.html' %}
      {% endcompress %}
    {% endblock %}
    
    {% block css %}
      {% compress css %}
        <link href="{% static 'vendors/maplibre/css/maplibre-gl.css' %}" rel='stylesheet'/>
      {% endcompress %}
    {% endblock css %}
    
  8. If you want to integrate basemaps to your map add the following to the corresponding places:

    <script src="{% static 'django_mapengine/js/basemaps.js' %}" type="text/javascript"></script>
    {% include 'django_mapengine/map_basemaps.html'}
    

User Guides

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django_mapengine-4.1.0.tar.gz (35.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_mapengine-4.1.0-py3-none-any.whl (50.0 kB view details)

Uploaded Python 3

File details

Details for the file django_mapengine-4.1.0.tar.gz.

File metadata

  • Download URL: django_mapengine-4.1.0.tar.gz
  • Upload date:
  • Size: 35.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Linux Mint","version":"21.3","id":"virginia","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for django_mapengine-4.1.0.tar.gz
Algorithm Hash digest
SHA256 e0e4aa27fbfab17c6b2c72d2802080e4ec0811efb01e8e691566eead28d34ac3
MD5 ff056f6f35342a566751e31051f3013d
BLAKE2b-256 d7b6a64fe7844f65e14fd66bb00cb0873d05f91c4c13f5e7a8b57cd4bf37c91a

See more details on using hashes here.

File details

Details for the file django_mapengine-4.1.0-py3-none-any.whl.

File metadata

  • Download URL: django_mapengine-4.1.0-py3-none-any.whl
  • Upload date:
  • Size: 50.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Linux Mint","version":"21.3","id":"virginia","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for django_mapengine-4.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 80d940f3d139b660d2b1a3b4c3a89f3a55b849bcdaa262fc91a8619f59bcb20f
MD5 6f1c6d20eabf934e4d8afc2fb733658d
BLAKE2b-256 6027af75da89844d436e683183a46f591360cdc387ab3602a0e3af36e8dc010a

See more details on using hashes here.

Release history Release notifications | RSS feed

6.1.0

2 files

6.0.0

2 files

5.1.0

2 files

5.0.3

2 files

5.0.2

2 files

5.0.1

2 files

This release

4.1.0 This release

2 files

4.0.0

2 files

3.3.0

1 file

3.2.1

2 files

3.2.0

2 files

3.1.0

2 files

3.0.3

2 files

3.0.2

2 files

3.0.1

2 files

3.0.0

2 files

2.3.0

2 files

2.2.10

2 files

2.2.9

2 files

2.2.8

2 files

2.2.7

2 files

2.2.6

2 files

2.2.5

2 files

2.2.4

2 files

2.2.3

2 files

2.2.2

2 files

2.2.1

2 files

2.2.0

2 files

2.1.0

2 files

2.0.1

2 files

2.0.0

2 files

1.8.2

2 files

1.8.1

2 files

1.8.0

2 files

1.7.0

2 files

1.6.1

2 files

1.6.0

2 files

1.5.0

2 files

1.4.1

2 files

1.4.0

2 files

1.3.0

2 files

1.2.2

2 files

1.2.1

2 files

1.1.0

2 files

1.0.0

2 files

0.19.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page