GeoDjango 表单 API

GeoDjango 提供了一些专门的表单字段和小部件,以便在地图上直观地显示和编辑地理定位数据。默认情况下,它们使用由 NASA 提供的、基于 OpenLayers 的地图,以及一个基础 WMS 图层。

字段参数

除了常规的 表单字段参数 之外,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 表单小部件允许您在地图上显示和编辑地理数据。请注意,当前没有小部件支持 3D 几何图形,因此几何图形字段将使用 Textarea 小部件回退此类数据。

小部件属性

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

BaseGeometryWidget.geom_type

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

BaseGeometryWidget.map_height
BaseGeometryWidget.map_width

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

自 4.2 版起已弃用: map_heightmap_width 属性已弃用,请使用 CSS 来调整地图小部件的大小。

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 使用托管在 cdn.jsdelivr.net 内容交付网络上的 ol.js 文件。您可以将这些小部件子类化,以便在内部 Media 类的 js 属性中指定您自己的 ol.js 文件版本(请参阅 资产作为静态定义)。

OSMWidget

class OSMWidget

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

template_name

gis/openlayers-osm.html

default_lat
default_lon

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

default_zoom

默认地图缩放级别为 12

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

返回顶部