GeoDjango はジオローカライズされたデータを地図上に視覚的に表示・編集するために、いくつかの特殊なフォームフィールドとウィジェットを提供します。デフォルトでは、 NASA が提供する WMS レイヤーをベースとした OpenLayers を利用した地図を使います。
通常の フォームフィールドの引数 に加えて、 GeoDjango のフォームフィールドは以下のオプションの引数を取ります。
GeoDjango のフォームウィジェットを使うと、ビジュアルマップ上に地理情報を表示したり編集したりできます。現在利用可能なウィジェットはどれも 3D ジオメトリをサポートしていないので、 ジオメトリフィールドは Textarea ウィジェットを使ってフォールバックします。
GeoDjango ウィジェットはテンプレートベースなので、その属性のほとんどは他の Django ウィジェットの属性と異なります。
BaseGeometryWidget.geom_type¶OpenGIS ジオメトリタイプ。通常、フォームフィールドによって設定されます。
BaseGeometryWidget.map_height¶BaseGeometryWidget.map_width¶ウィジェットマップの高さと幅 (デフォルトは400x600)。
バージョン 4.2 で非推奨: map_height 属性と map_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
BaseGeometryWidget¶これは、サブクラスが必要とするロジックを含む抽象ベースウィジェットです。このウィジェットを直接ジオメトリフィールドに使うことはできません。GeoDjango ウィジェットのレンダリングは template_name クラス属性で識別されるテンプレートに基づいていることに注意してください。
OpenLayersWidget
OpenLayersWidget¶これはすべての GeoDjango フォームフィールドで使用されるデフォルトウィジェットです。template_name は gis/openlayers.html です。
OpenLayersWidget と OSMWidget は cdn.jsdelivr.net のコンテンツ配信ネットワークでホストされている ol.js ファイルを使用します。これらのウィジェットをサブクラス化することで、内部の Media クラスの js プロパティに ol.js ファイルの独自のバージョンを指定できます (定数として定義されたアセット を参照) 。
OSMWidget
OSMWidget¶このウィジェットは地理情報オブジェクトを表示するためにOpenStreetMapベースレイヤーを使用します。属性は以下の通りです:
template_name¶gis/openlayers-osm.html
default_lat¶default_lon¶デフォルトの中心緯度と経度はそれぞれ 47 と 5 で、フランス東部の位置です。
default_zoom¶デフォルトの地図の縮尺は 12 です。
OpenLayersWidget の JavaScript ファイルのホスティングに関する注意はここにも適用されます。マップタイルへの https アクセスに関する FAQ answer も参照してください。
8月 06, 2024