GeoDjango Forms API

GeoDjango提供一些专用的表单字段和小部件,以便在地图上可视化地显示和编辑地理定位数据。默认情况下,他们使用OpenLayers供电地图,由Metacarta提供的基本WMS图层。

Field arguments

除了常规的form field arguments,GeoDjango表单字段采用以下可选参数。

srid

Field.srid

这是字段值应该转换为的SRID代码。例如,如果地图窗口小部件SRID与应用程序或数据库更常用的SRID不同,则该字段将自动将输入值转换为该SRID。

geom_type

Field.geom_type

您通常不应该设置或更改应根据字段类设置的属性。它与OpenGIS标准几何名称匹配。

Form field classes

GeometryField

class GeometryField

PointField

class PointField

LineStringField

class LineStringField

PolygonField

class PolygonField

MultiPointField

class MultiPointField

MultiLineStringField

class MultiLineStringField

MultiPolygonField

class MultiPolygonField

GeometryCollectionField

class GeometryCollectionField

Form widgets

GeoDjango表单小部件允许您在视觉地图上显示和编辑地理数据。请注意,目前没有可用的小部件支持3D几何,因此几何字段将使用简单的Textarea小部件来备份这些数据。

Widget attributes

GeoDjango窗口小部件是基于模板的,因此它们的属性与其他Django窗口小部件属性大不相同。

BaseGeometryWidget.geom_type

OpenGIS几何类型,通常由表单字段设置。

BaseGeometryWidget.map_height
BaseGeometryWidget.map_width

小部件地图的高度和宽度(默认值为400x600)。

BaseGeometryWidget.map_srid

映射使用的SRID代码(默认值为4326)。

BaseGeometryWidget.display_raw

布尔值,指定是否显示当前几何的序列化表示的textarea输入可见,主要用于调试目的(默认值为False)。

BaseGeometryWidget.supports_3d

指示小部件是否支持3D数据版本(默认值为False)。

BaseGeometryWidget.template_name

用于呈现地图窗口小部件的模板。

您可以以与任何其他Django窗口小部件相同的方式传递窗口小部件属性。例如:

from django.contrib.gis import forms

class MyGeoForm(forms.Form):
    point = forms.PointField(widget=
        forms.OSMWidget(attrs={'map_width': 800, 'map_height': 500}))

Widget classes

BaseGeometryWidget

class BaseGeometryWidget

这是一个包含子类所需逻辑的抽象基本部件。您不能直接将此窗口小部件用于几何字段。请注意,GeoDjango窗口小部件的呈现基于由template_name类属性标识的模板。

OpenLayersWidget

class OpenLayersWidget

这是所有GeoDjango表单字段使用的默认小部件。template_namegis/openlayers.html

OpenLayersWidgetOSMWidget使用openlayers.org网站上托管的openlayers.js文件。这适用于开发期间的基本用法,但不适用于生产部署,因为openlayers.org/api/没有保证的正常运行时间,并在缓慢的服务器上运行。因此,建议您将这些小部件子类化,以便在内部Mediajs属性中指定您自己版本的openlayers.js类(请参阅Assets as a static definition)。您可以在自己的服务器上托管符合您需求的openlayers.js 副本,或者从内容提交网络(例如https://) cdnjs.com / t>。如果需要,您还可以使用https协议来投放JavaScript文件。

OSMWidget

class OSMWidget

此小部件使用OpenStreetMap基本图层(Mapnik)显示地理对象。template_namegis/openlayers-osm.html

上面关于JavaScript文件托管的OpenLayersWidget注释也适用于此。另请参阅此常见问题解答关于https的访问地图图块。