GeoDjango Forms API
GeoDjango предоставляет некоторые специализированные поля форм и виджеты для визуального отображения и редактирования геолокализованных данных на карте. По умолчанию они используют карты на основе OpenLayers, с базовым слоем WMS, предоставляемым NASA.
Аргументы поля
В дополнение к обычным аргументам полей форм, поля форм 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).
-
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={'map_width': 800, 'map_height': 500}))
Классы виджетов
BaseGeometryWidget
-
class BaseGeometryWidget -
Это абстрактный базовый виджет, содержащий логику, необходимую подклассам. Вы не можете напрямую использовать этот виджет для поля геометрии. Обратите внимание, что отображение виджетов GeoDjango основано на шаблоне, определяемом атрибутом класса
template_name.
OpenLayersWidget
-
class OpenLayersWidget -
Это виджет по умолчанию, используемый всеми полями форм GeoDjango.
template_nameявляетсяgis/openlayers.html.OpenLayersWidgetиOSMWidgetиспользуют файлopenlayers.js, размещённый на сети доставки контентаcdnjs.cloudflare.com. Вы можете подклассифицировать эти виджеты, чтобы указать собственную версию файлаOpenLayers.jsнастроенную под ваши нужды в свойствеjsвнутреннего классаMedia(см. Актив как статическое определение).
OSMWidget
-
class OSMWidget -
Этот виджет использует базовый слой OpenStreetMap для отображения географических объектов на карте. Атрибуты:
-
template_name -
gis/openlayers-osm.html
-
default_lat
-
default_lon -
По умолчанию широта и долгота центра составляют
47и5соответственно, что расположено в восточной части Франции.
-
default_zoom -
Добавлена в Django 2.0.
По умолчанию масштаб карты составляет
12.
Примечание к
OpenLayersWidgetвыше о размещении файлов JavaScript также относится и здесь. См. также ответ на часто задаваемый вопрос как встроить карту в ваш веб-сайт https об доступе к плиткам картыhttps. -
© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/2.1/ref/contrib/gis/forms-api/