Spec-Zone.ru › Django 1.10

GeoDjango Forms API

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

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

Помимо стандартных аргументов полей формы, поля форм GeoDjango принимают следующие необязательные аргументы.

srid

Field.srid

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

geom_type

Field.geom_type

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

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

GeometryField

class GeometryField [source]

PointField

class PointField [source]

LineStringField

class LineStringField [source]

PolygonField

class PolygonField [source]

MultiPointField

class MultiPointField [source]

MultiLineStringField

class MultiLineStringField [source]

MultiPolygonField

class MultiPolygonField [source]

GeometryCollectionField

class GeometryCollectionField [source]

Виджеты формы

Виджеты форм GeoDjango позволяют отображать и редактировать географические данные на визуальной карте. Обратите внимание, что ни один из доступных виджетов не поддерживает 3D-геометрии, поэтому поля геометрии будут использовать простой виджет 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

class BaseGeometryWidget

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

OpenLayersWidget

class OpenLayersWidget

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

OpenLayersWidget и OSMWidget используют файл openlayers.js, размещенный на сайте openlayers.org. Это работает для базового использования во время разработки, но не подходит для развертывания в рабочей среде, так как у openlayers.org/api/ нет гарантированной доступности и медленный сервер. Поэтому рекомендуется подклассировать эти виджеты, чтобы указать собственную версию файла openlayers.js в свойстве js внутреннего класса Media (см. Активы как статическое определение). Вы можете разместить копию openlayers.js настроенную под ваши нужды на вашем собственном сервере или обратиться к копии с сети доставки контента, например, https://cdnjs.com/. Это также позволит вам обслуживать файлы JavaScript с использованием протокола https при необходимости.

OSMWidget

class OSMWidget

Этот виджет использует базовый слой OpenStreetMap (Mapnik) для отображения географических объектов. template_name по умолчанию gis/openlayers-osm.html.

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

© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/1.10/ref/contrib/gis/forms-api/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API