GeoDjango proporciona algunos campos de formulario y controles especializados para visualizar y editar datos geolocalizados en un mapa. Por defecto, utilizan mapas impulsados por OpenLayers, con una capa base WMS proporcionada por NASA.
Además de los argumentos de campo de formulario regulares form field arguments, los campos de formulario de GeoDjango admiten los siguientes argumentos opcionales.
Este es el código de SRID al que debe transformarse el valor del campo. Por ejemplo, si el código de SRID del widget de mapa difiere del SRID utilizado generalmente por tu aplicación o base de datos, el campo convierte automáticamente los valores de entrada a ese SRID.
geom_type`¶No deberías tener que establecer o cambiar ese atributo, ya que debe estar configurado según la clase del campo. Se ajusta al nombre de geometría estándar OpenGIS.
Campo de Punto¶Campo de Línea String¶Campo de Polígono¶Campo de Multipuntos¶Campo de MultiLínea String¶Campo de Multipolígono¶Campo de Colección Geométrica¶Las herramientas de formulario GeoDjango te permiten mostrar y editar datos geográficos en una mapa visual. Ten en cuenta que ninguna de las herramientas disponibles actualmente admite geometrías 3D, por lo que los campos de geometría recaerán en utilizar la herramienta Textarea para dichos datos.
Los textos traducidos son:
El tipo de geometría OpenGIS, generalmente establecido por el campo del formulario.
Código SRID utilizado por la mapa (por defecto es 4326).
Valor booleano que especifica si un textarea de entrada mostrando la representación serializada de la geometría actual está visible, principalmente con fines de depuración (por defecto es False).
Indica si el widget admite la edición de datos 3D (por defecto es False).
La plantilla utilizada para renderizar el widget del mapa.
Puedes pasar atributos de widget de la misma manera que para cualquier otro widget Django. Por ejemplo:
from django.contrib.gis import forms
class MyGeoForm(forms.Form):
point = forms.PointField(widget=forms.OSMWidget(attrs={"display_raw": True}))
BaseGeometryWidget
Esta es una clase base abstracta que contiene la lógica necesaria por las subclases. No puedes utilizar directamente este widget para un campo de geometría. Ten en cuenta que la representación de los widgets GeoDjango se basa en una plantilla, identificada por el atributo de clase template_name.
OpenLayersWidget
Esta es la widget por defecto utilizada por todos los campos formularios GeoDjango. template_name es gis/openlayers.html.
OpenLayersWidget y OSMWidget utilizan el archivo ol.js alojado en la red de entrega de contenido cdn.jsdelivr.net. Puedes heredar estas widgets para especificar tu propia versión del archivo ol.js en la propiedad js de la clase Media interior (ver Activos como definición estática).
OSMWidget
Esta widget utiliza una capa base de OpenStreetMap para mostrar objetos geográficos. Las atributos son:
gis/openlayers-osm.html
La latitud y longitud por defecto del centro son 47 y 5, respectivamente, lo que es un lugar en el este de Francia.
El nivel de zoom por defecto es 12.
La nota sobre alojamiento de archivos JavaScript de la OpenLayersWidget arriba también se aplica aquí. Consulta también esta respuesta del FAQ sobre acceso a mapas con https.
may 31, 2026