GeoDjango Forms API

GeoDjango提供一些专用的表单字段和小部件,以便在地图上可视化地显示和编辑地理定位数据。 默认情况下,它们使用OpenLayers赋值映射,其中包含由NASA提供的基本WMS层。

Field arguments

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

srid

领域。 SRID T0> ¶ T1>

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

geom_type

领域。 geom_type T0> ¶ T1>

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

Form field classes

GeometryField

GeometryField T0> ¶ T1>

PointField

PointField T0> ¶ T1>

LineStringField

LineStringField T0> ¶ T1>

PolygonField

PolygonField T0> ¶ T1>

MultiPointField

MultiPointField T0> ¶ T1>

MultiLineStringField

MultiLineStringField T0> ¶ T1>

MultiPolygonField

MultiPolygonField T0> ¶ T1>

GeometryCollectionField

GeometryCollectionField T0> ¶ T1>

Form widgets

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

Widget attributes

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

BaseGeometryWidget。 geom_type T0> ¶ T1>

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

BaseGeometryWidget。地图高度 T0> ¶ T1>
BaseGeometryWidget。地图宽度 T0> ¶ T1>

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

BaseGeometryWidget。 map_srid T0> ¶ T1>

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

BaseGeometryWidget。 display_raw T0> ¶ T1>

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

BaseGeometryWidget。 supports_3d T0> ¶ T1>

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

BaseGeometryWidget。 TEMPLATE_NAME T0> ¶ T1>

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

您可以以与任何其他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

BaseGeometryWidget T0> ¶ T1>

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

OpenLayersWidget

OpenLayersWidget T0> ¶ T1>

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

OpenLayersWidgetOSMWidget使用托管在cdnjs.cloudflare.com内容投放网络上的openlayers.js文件。 您可以对这些小部件进行子类化,以便根据需要定制您自己的版本OpenLayers.js文件在内部的js属性Media类(见Assets as a static definition)。

在Django更改1.11:

旧版本使用不适于生产使用的openlayers.org中的OpenLayers.js,因为它不能保证正常运行时间并且在慢速服务器上运行。

此外,小部件现在使用OpenLayers 3而不是OpenLayers 2。

OSMWidget

OSMWidget T0> ¶ T1>

此小部件使用OpenStreetMap基础层来显示地理对象。 属性有:

TEMPLATE_NAME T0> ¶ T1>

GIS /的OpenLayers-osm.html

default_lat T0> ¶ T1>
default_lon T0> ¶ T1>

The default center latitude and longitude are 47 and 5, respectively, which is a location in eastern France.

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

在Django更改1.11:

OpenLayers 2.x已经放弃了OpenLayers 3。 如果您扩展了gis/openlayers-osm.html模板,请查看您的自定义模板。