GeoDjango 表單 API¶
GeoDjango 提供一些專門的表單欄位和小工具,以便在地圖上視覺化顯示和編輯地理定位資料。預設情況下,它們使用由 OpenLayers 驅動的地圖,並由 NASA 提供基礎 WMS 圖層。
欄位參數¶
除了常規的 表單欄位參數 外,GeoDjango 表單欄位還接受以下可選參數。
srid
¶
- Field.srid¶
這是欄位值應轉換成的 SRID 代碼。例如,如果地圖小工具的 SRID 與您的應用程式或資料庫更常用的一般 SRID 不同,則該欄位會自動將輸入值轉換為該 SRID。
geom_type
¶
- Field.geom_type¶
您通常不必設定或變更該屬性,該屬性應根據欄位類別設定。它符合 OpenGIS 標準幾何圖形名稱。
表單欄位類別¶
GeometryField
¶
PointField
¶
LineStringField
¶
PolygonField
¶
MultiPointField
¶
MultiLineStringField
¶
MultiPolygonField
¶
GeometryCollectionField
¶
表單小工具¶
GeoDjango 表單小工具可讓您在視覺地圖上顯示和編輯地理資料。請注意,目前沒有任何可用的小工具支援 3D 幾何圖形,因此幾何圖形欄位將會針對這類資料使用 Textarea
小工具作為後備。
小工具屬性¶
GeoDjango 小工具是基於樣板的,因此它們的屬性與其他 Django 小工具屬性大多不同。
- BaseGeometryWidget.geom_type¶
OpenGIS 幾何圖形類型,通常由表單欄位設定。
- BaseGeometryWidget.map_srid¶
地圖使用的 SRID 代碼 (預設為 4326)。
- BaseGeometryWidget.display_raw¶
布林值,指定是否顯示顯示目前幾何圖形序列化表示的 textarea 輸入,主要用於偵錯用途 (預設為
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_name
是gis/openlayers.html
。OpenLayersWidget
和OSMWidget
使用託管在cdn.jsdelivr.net
內容傳遞網路上的ol.js
檔案。您可以對這些小工具進行子類別化,以便在內部Media
類別的js
屬性中指定您自己的ol.js
檔案版本 (請參閱 以靜態定義的資產)。
OSMWidget