GeoDjango提供一些专用的表单字段和小部件,以便在地图上可视化地显示和编辑地理定位数据。默认情况下,他们使用OpenLayers供电地图,由Metacarta提供的基本WMS图层。
除了常规的form field arguments,GeoDjango表单字段采用以下可选参数。
GeoDjango表单小部件允许您在视觉地图上显示和编辑地理数据。请注意,目前没有可用的小部件支持3D几何,因此几何字段将使用简单的Textarea小部件来备份这些数据。
GeoDjango窗口小部件是基于模板的,因此它们的属性与其他Django窗口小部件属性大不相同。
OpenGIS几何类型,通常由表单字段设置。
小部件地图的高度和宽度(默认值为400x600)。
映射使用的SRID代码(默认值为4326)。
布尔值,指定是否显示当前几何的序列化表示的textarea输入可见,主要用于调试目的(默认值为False)。
指示小部件是否支持3D数据版本(默认值为False)。
用于呈现地图窗口小部件的模板。
您可以以与任何其他Django窗口小部件相同的方式传递窗口小部件属性。例如:
from django.contrib.gis import forms
class MyGeoForm(forms.Form):
point = forms.PointField(widget=
forms.OSMWidget(attrs={'map_width': 800, 'map_height': 500}))
BaseGeometryWidget
这是一个包含子类所需逻辑的抽象基本部件。您不能直接将此窗口小部件用于几何字段。请注意,GeoDjango窗口小部件的呈现基于由template_name类属性标识的模板。
OpenLayersWidget
这是所有GeoDjango表单字段使用的默认小部件。template_name是gis/openlayers.html。
OpenLayersWidget和OSMWidget使用openlayers.org网站上托管的openlayers.js文件。这适用于开发期间的基本用法,但不适用于生产部署,因为openlayers.org/api/没有保证的正常运行时间,并在缓慢的服务器上运行。因此,建议您将这些小部件子类化,以便在内部Media的js属性中指定您自己版本的openlayers.js类(请参阅Assets as a static definition)。您可以在自己的服务器上托管符合您需求的openlayers.js 副本,或者从内容提交网络(例如https://) cdnjs.com / t>。如果需要,您还可以使用https协议来投放JavaScript文件。
OSMWidget
此小部件使用OpenStreetMap基本图层(Mapnik)显示地理对象。template_name是gis/openlayers-osm.html。
上面关于JavaScript文件托管的OpenLayersWidget注释也适用于此。另请参阅此常见问题解答关于https的访问地图图块。
2015年5月13日