geodjango表格API

geodjango提供了一些专门的表单字段和小部件,以便在地图上直观地显示和编辑本地化的数据。默认情况下,他们使用 OpenLayers -Powered Maps,提供基本的WMS层 NASA .

字段参数

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

srid

Field.srid

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

geom_type

Field.geom_type

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

窗体域类

GeometryField

class GeometryField[源代码]

PointField

class PointField[源代码]

LineStringField

class LineStringField[源代码]

PolygonField

class PolygonField[源代码]

MultiPointField

class MultiPointField[源代码]

MultiLineStringField

class MultiLineStringField[源代码]

MultiPolygonField

class MultiPolygonField[源代码]

GeometryCollectionField

class GeometryCollectionField[源代码]

窗体控件

GeoDjango表单小部件允许您在可视地图上显示和编辑地理数据。请注意,当前可用的小部件都不支持三维几何图形,因此几何图形字段将使用 Textarea 此类数据的小部件。

小部件属性

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

BaseGeometryWidget.geom_type

OpenGIS几何类型,通常由窗体字段设置。

BaseGeometryWidget.map_srid

地图使用的SRID代码(默认为4326)。

BaseGeometryWidget.display_raw

布尔值,指定显示当前几何图形序列化表示的文本区域输入是否可见,主要用于调试(默认为 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={"display_raw": True}))

控件类

BaseGeometryWidget

class BaseGeometryWidget[源代码]

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

OpenLayersWidget

class OpenLayersWidget[源代码]

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

OpenLayersWidgetOSMWidget 使用 ol.js 托管在 cdn.jsdelivr.net 内容交付网络。您可以创建这些小部件的子类,以便指定您自己的 ol.js 文件中的 js 内心的财产 Media 类(请参见 作为静态定义的资产 )。

OSMWidget

class OSMWidget[源代码]

这个小部件使用OpenStreetmap基础层来显示地理对象。属性是:

template_name

gis/openlayers-osm.html

default_lat
default_lon

默认的中心纬度和经度为 475 分别位于法国东部。

default_zoom

默认地图缩放为 12 .

这个 OpenLayersWidget 上面关于javascript文件托管的说明也适用于这里。也见此 FAQ answer 关于 https 访问地图图块。