geodjango提供了一些专门的表单字段和小部件,以便在地图上直观地显示和编辑本地化的数据。默认情况下,他们使用 OpenLayers -Powered Maps,提供基本的WMS层 NASA .
除了常规的 form field arguments ,geodjango表单字段采用以下可选参数。
srid¶这是字段值应转换为的SRID代码。例如,如果映射小部件srid与应用程序或数据库更常用的srid不同,则字段将自动将输入值转换为该srid。
geom_type¶通常,您不必设置或更改该属性,该属性应根据字段类进行设置。它与OpenGIS标准几何图形名称匹配。
GeometryField¶PointField¶LineStringField¶PolygonField¶MultiPointField¶MultiLineStringField¶MultiPolygonField¶GeometryCollectionField¶GeoDjango表单小部件允许您在视觉地图上显示和编辑地理数据。请注意,当前可用的小部件都不支持3D几何,因此几何字段将使用 Textarea 此类数据的小部件。
geodjango小部件是基于模板的,因此它们的属性与其他django小部件属性大不相同。
OpenGIS几何类型,通常由窗体字段设置。
地图使用的SRID代码(默认为4326)。
布尔值,指定显示当前几何图形序列化表示的文本区域输入是否可见,主要用于调试(默认为 False )
指示小部件是否支持3D数据版本(默认为 False )
用于呈现地图小部件的模板。
您可以以与任何其他Django小部件相同的方式传递小部件属性。例如::
from django.contrib.gis import forms
class MyGeoForm(forms.Form):
point = forms.PointField(widget=forms.OSMWidget(attrs={"display_raw": True}))
BaseGeometryWidget
这是一个抽象的基础小部件,包含子类所需的逻辑。不能直接将此小部件用于几何字段。请注意,geodjango小部件的呈现基于模板,由 template_name 类属性。
OpenLayersWidget
这是所有geodjango表单字段使用的默认小部件。 template_name 是 gis/openlayers.html .
OpenLayersWidget 和 OSMWidget 使用 ol.js 托管在 cdn.jsdelivr.net 内容交付网络。您可以创建这些小部件的子类,以便指定您自己的 ol.js 文件中的 js 内心的财产 Media 类(请参见 作为静态定义的资产 )。
OSMWidget
这个小部件使用OpenStreetmap基础层来显示地理对象。属性是:
gis/openlayers-osm.html
默认的中心纬度和经度为 47 和 5 分别位于法国东部。
默认地图缩放为 12 .
这个 OpenLayersWidget 上面关于javascript文件托管的说明也适用于这里。也见此 FAQ answer 关于 https 访问地图图块。
5月 28, 2025