Static Point Field Widget
=========================
Preview
^^^^^^^
.. image:: /_static/images/mapbox_static_overlay.png
This widget integrates with Django to provide an interface using the Mapbox `Static Image API `_. It automatically generates static map images based on GeoDjango PointField values.
Requirements
^^^^^^^^^^^^
**Access Token**: A Mapbox access token is required to use this widget. Please follow the instructions on the `MapBox Create Access Token `_ page.
Key Features
^^^^^^^^^^^^
**Generate Static Map Image Automatically:** The widget can generate a static image URL with the provided GeoDjango PointField value.
**MagnificPopup Support:** The widget-generated static map image can work with the `MagnificPopup jQuery Plugin `_.
**Generate Thumbnail for Better Popup Usage:** You can specify a thumbnail size with the `thumbnailSize` setting for better popup usage. Note that this setting will result in an additional API request, which may incur extra costs.
Settings
^^^^^^^^
Default Settings
----------------
.. code-block:: python
MAP_WIDGETS = {
"Mapbox": {
"accessToken": "",
"PointField": {
"static": {
"enableMagnificPopup": True,
"thumbnailSize": None,
"mapParams": {
"username": "mapbox",
"zoom": 15,
"bearing": 0,
"pitch": 0,
"style_id": "streets-v12",
"@2x": "@2x",
"width": "480",
"height": "480",
},
"overlayParams": {
"name": "pin-l",
"label": "",
"color": ""
},
},
},
}
* **accessToken**: `Mapbox Access Token `_. (required)
* **enableMagnificPopup**: Enable/Disable `MagnificPopup `_ functionality.
* **thumbnailSize**: Specify thumbnail size for better popup usage.(e.g ``240x240``)
* **mapParams**: Static Map Image API `MapParams `_ can be managed using this dictionary globally.
* **overlayParams**: The map `overlay geojson params `_ can be managed using this dictionary globally.
.. Note::
More details about map widget settings usage can be found in the :ref:`settings guide `.
Usage
^^^^^
In the Django project settings file, the `MAP_WIDGETS` dictionary should be defined to customize the default settings for map widgets.
.. code-block:: python
MAP_WIDGETS = {
"Mapbox": {
"accessToken": MapBoxAccessToken,
"PointField": {
"static": {
"static": {
"enableMagnificPopup": True,
"thumbnailSize": "200x200"
},
},
},
}
Django Admin
------------
.. code-block:: python
from mapwidgets import MapboxPointFieldStaticWidget
class CityAdmin(admin.ModelAdmin):
formfield_overrides = {
models.PointField: {"widget": MapboxPointFieldStaticWidget}
}
Django Forms
------------
See the `location_has_default` field usage to understand how you can override global settings with the `settings` parameter for a specific widget.
.. code-block:: python
from mapwidgets import MapboxPointFieldStaticWidget
class CityDetailForm(forms.ModelForm):
class Meta:
model = City
fields = ("name", "location", "location_has_default")
widgets = {
"location": MapboxPointFieldStaticWidget,
"location_has_default": MapboxPointFieldStaticWidget(
settings={"enableMagnificPopup": False}
),
}
See more usage of this widget in `demo project `_.