API GeoDjango Forms

GeoDjango предоставляет несколько специализированных полей форм и виджетов для визуального отображения и редактирования геолокализованных данных на карте. По умолчанию они используют карты с поддержкой OpenLayers , а базовый слой WMS предоставляется НАСА .

Аргументы поля

В дополнение к обычным аргументам поля формы, поля формы GeoDjango принимают следующие необязательные аргументы.

srid

Field.srid

Это код SRID, в который должно быть преобразовано значение поля. Например, если SRID виджета карты отличается от SRID, обычно используемого вашим приложением или базой данных, поле автоматически преобразует входные значения в этот SRID.

geom_type

Field.geom_type

Обычно вам не нужно устанавливать или изменять этот атрибут, который должен быть настроен в зависимости от класса поля. Он соответствует стандартному имени геометрии OpenGIS.

Классы полей формы

GeometryField

класс GeometryField

PointField

класс PointField

LineStringField

класс LineStringField

PolygonField

класс PolygonField

MultiPointField

класс MultiPointField

MultiLineStringField

класс MultiLineStringField

MultiPolygonField

класс MultiPolygonField

GeometryCollectionField

класс GeometryCollectionField

Виджеты форм

Виджеты форм GeoDjango позволяют отображать и редактировать географические данные на визуальной карте. Обратите внимание, что ни один из доступных в настоящее время виджетов не поддерживает трехмерную геометрию, поэтому поля геометрии будут откатываться с использованием Textareaвиджета для таких данных.

Атрибуты виджета

Виджеты GeoDjango основаны на шаблонах, поэтому их атрибуты в основном отличаются от атрибутов других виджетов Django.

BaseGeometryWidget.geom_type

Тип геометрии OpenGIS, обычно задается полем формы.

BaseGeometryWidget.map_height
BaseGeometryWidget.map_width

Высота и ширина карты виджетов (по умолчанию 400x600).

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={'map_width': 800, 'map_height': 500}))

Классы виджетов

BaseGeometryWidget

класс BaseGeometryWidget

Это абстрактный базовый виджет, содержащий логику, необходимую для подклассов. Вы не можете напрямую использовать этот виджет для геометрического поля. Обратите внимание, что рендеринг виджетов GeoDjango основан на шаблоне, определяемом template_nameатрибутом класса.

OpenLayersWidget

класс OpenLayersWidget

Это виджет по умолчанию, используемый всеми полями формы GeoDjango. template_nameесть gis/openlayers.html.

OpenLayersWidgetи OSMWidgetиспользовать openlayers.jsфайл, размещенный в cdnjs.cloudflare.comсети доставки контента. Вы можете создать подклассы этих виджетов, чтобы указать собственную версию OpenLayers.jsфайла в jsсвойстве внутреннего Mediaкласса (см. « Активы как статическое определение» ).

OSMWidget

класс OSMWidget

Этот виджет использует базовый слой OpenStreetMap для отображения географических объектов. Атрибуты:

template_name

gis/openlayers-osm.html

default_lat
default_lon

Центральная широта и долгота по умолчанию - 47и 5соответственно, что соответствует местоположению на востоке Франции.

default_zoom

По умолчанию масштаб карты равен 12.

OpenLayersWidgetПримечание о JavaScript файлообменника выше , также применяется здесь. См. Также ответ на часто задаваемые вопросы о httpsдоступе к фрагментам карты.

Copyright ©2021 All rights reserved