Блок "3D-карта"
Назначение
Блок «3D Карта» обеспечивает отображение информации на карте. На вход блока поступают данные, которые он обрабатывает и преобразует в интерактивный визуализатор с множеством настроек. Для начала работы с блоком его необходимо выбрать в библиотеке блоков и перенести в область графа.
Настройки блока
Доступ к настройкам блока осуществляется через локальное меню блока (пункт Настройки):
Группа "3D-карта"
| Наименование | Тип | Обязательное | Описание | Пример |
|---|---|---|---|---|
| Настройки стиля карты | Выпадающий список | Да | Источник данных для стиля карты. Возможные варианты: - Глобальные стили - из списка Глобальные стили карты. - Задать параметры вручную - ручной ввод стиля карты в формате JSON. По умолчанию выбрано "Глобальные стили" |
|
| Стиль | JSON | Да | Доступен, если в настройках стилей выбран вариант "Задать параметры вручную". Определяет стиль карты. Если на вход блока "Стиль отображения карты" был передан стиль, эта настройка будет игнорироваться. По умолчанию используется пустой стиль. |
|
| Использовать стиль по умолчанию | Флаг | Да | Доступен, если в настройках стилей выбран вариант "Глобальные стили". Включает использование стиля карты по умолчанию. Подробнее описано в Стили карты При отсутствии стлия по умолчанию будет использован пустой стиль карты |
|
| Выбор стиля | Список | Да | Доступен, если в настройках стилей выбран вариант "Глобальные стили" и флаг "Использовать стиль по умолчанию" выключен. Определяет стиль карты из списка глобальных стилей в приложении (см. Глобальные стили карты). |
|
| Центр карты, широта | Вещественное число | Нет | Начальное положение карты, широта (latitude) | 0 |
| Центр карты, долгота | Вещественное число | Нет | Начальное положение карты, долгота (logitude) | 0 |
| Начальный масштаб | Целое число | Нет | Начальный масштаб карты | 2 |
| Разрешить масштабирование | Флаг | Разрешить или нет изменение масштаба карты | ||
| Минимальный масштаб | Целое число | Нет | Минимальный масштаб, который будет доступен | 0 |
| Максимальный масштаб | Целое число | Нет | Максимальный масштаб, который будет доступен | 18 |
| Точность масштабирования | Выпадающий список | Нет | Выбор точности масштабирования для карты | |
| Угол наклона камеры | Целое число | Да | Угол наклона камеры карты, который будет выставлен по умолчанию | 0 |
| Азимут | Целое число | Нет | Азимут камеры, который будет выставлен по умолчанию | 0 |
| Сглаживание | Флаг | Да | Использовать или нет сглаживание на карте (antialiasing), по умолчанию включено | |
| Включить 3D | Флаг | Да | Включить или отключить возможность отображения в 3D. При отключении карта будет выглядеть как 2D и настройки камеры не будут применяться | |
| Пользовательские иконки | Строка | Нет | Адрес откуда карте брать иконка для точечного слоя pointsLayer (https://docs.mapbox.com/mapbox-gl-js/style-spec/layers/#symbol). Подробнее см. раздел Описание работы с иконками | /static/map/custom-icons/city/icons.json |
| Редактирование объектов | Флаг | Нет | Доступность редактирования слоев карты. Если в описании слоя есть флаг editable=true эта настройка будет игнорироваться |
|
| Отображать карточку при переходе на объект | Флаг | Нет | Включить отображение карточки при переходе на объект. По умолчанию - включено. | |
| Отображать отсутствие карточки | Флаг | Нет | Включить отображение пустой карточки (отображение карточки "нет данных"). По умолчанию - включено. | |
| Режим отображения карточки | Выпадающий список | Нет | Настройки режимов отображения карточки. Возможные значения: - Карточки отображаются - при клике на объект с карточкой, последняя отобразится (по умолчанию). - Карточки не отображаются - при клике на объект с карточкой, она не откроется. |
|
| Вращение камеры | Флаг | Да | Запускать или нет эффект вращения камеры при отсутствии действий с картой | |
| Включение вращения камеры | Выпадающий список | Нет | Время бездействия пользователя, через которое будет запущено вращение камеры | |
| Скорость вращения | Целое число | Нет | Скорость вращения камеры, от 100 до 1000, где 100 - быстро, а 1000 - медленно | |
| Отображать координаты курсора | Флаг | Да | Отображать или нет координаты курсора на карте | |
| Расположение | Выпадающий список | Нет | Доступен при включении "Отображать координаты курсора". Позволяет выбрать угол карты, в котором отображать координаты: - Справа внизу - Справа вверху - Слева вверху - Слева внизу |
По умолчанию "Справа внизу" |
| Единицы | Выпадающий список | Нет | Доступен при включении "Отображать координаты курсора". Позволяет выбрать единицы отображения: - Десятичные градусы (DD) - Градусы, минуты, секунды (DMS) |
По умолчанию "Десятичные градусы (DD)" |
| Отображать текущий масштаб | Флаг | Да | Отображать текущий масштаб на карте | |
| Расположение | Выпадающий список | Нет | Доступен при включении "Отображать текущий масштаб". Позволяет выбрать угол карты, в котором отображать координаты: - Справа внизу - Справа вверху - Слева вверху - Слева внизу |
По умолчанию "Справа внизу" |
| Вид | Выпадающий список | Нет | Доступен при включении "Отображать текущий масштаб". Позволяет выбрать текст для описания масштаба: - Фактор: текст вида "7.8" - Пропорция: текст вида "1:100 000" |
По умолчанию "Фактор" |
| Отображать инструменты | Флаг | Да | Отображать или нет инструменты измерения на карте | |
| Отображать переключатель 2D/3D | Флаг | Нет | Отображать переключатель 2D/3D на карте | |
| Поиск на карте | Флаг | Да | Отображать или нет поиск на карте | |
| Исключить из поиска | Строка | Нет | Доступен при включении "Поиск на карте". Атрибуты слоев, которые требуется исключить из поиска. Ввод атрибутов через разделитель ;(точка с запятой), без пробелов (наименование регистрозависимое): Attr1;Attr2;...;AttrN |
popup;attr1;region |
| Скрывать не привязанные слои | Флаг | Да | В случае, если дерево слоев задается через вход "Дерево папок для слоев" включение флага скроет с карты все слои, которые отсутствуют в иерархии | |
| Отображать индикатор загрузки визуализатора | Флаг | Нет | Включение индикатора загрузки визуализатора. По умолчанию индикатор включен. |
Группа "Настройки карточки"
| Наименование | Тип | Обязательное | Описание | Пример |
|---|---|---|---|---|
| Цвет карточки | Цвет | Да | Задает цвет фона карточек объектов | rgba(255, 255, 255, 1) |
| Цвет границы карточки | Цвет | Да | Задает цвет границы карточек объектов | rgba(255, 255, 255, 1) |
| Тип границы карточки | Выпадающий список | Да | Тип границы для карточки объекта: - Сплошная линия - Штриховая линия - Линия из точек - Двойная линия - Скрытая линия - Отсутствует |
Сплошная линия |
| Толщина границы карточки | Целое число | Да | Задает толщину границ карточек объектов | 1 |
| Цвет текста | Цвет | Да | Задает цвет текста карточек объектов (если он не переопределен стилем в html внутри) | rgba(0, 0, 0, 1) |
Группа "Геокодирование"
| Наименование | Тип | Обязательное | Описание | Пример |
|---|---|---|---|---|
| Геокодер | Выпадающий список | Нет | Выбор геокодера для расширенного поиска объектов. Возможные варианты: 1. Без геокодирования 2. Геокодер DaData (подробнее см. https://dadata.ru/) 3. Геокодер Яндекс (подробнее https://yandex.ru/maps-api/products/geocoder-api) 4. Встроенный геокодер |
|
| API-ключ DaData | Шифрованная строка | Нет | Только для геокодера Dadata. API-ключ для подключения геокодера. |
|
| Секретный ключ DaData | Шифрованная строка | Нет | Только для геокодера Dadata. Секретный ключ для подключения геокодера. |
|
| API-ключ Яндекс | Шифрованная строка | Нет | Только для геокодера Яндекс. API-ключ для подключения геокодера Яндекс |
|
| Ввод пароля | Выпадающий список | Нет | Поле появляется, если выбраны геокодеры Dadata или Яндекс. Настройка применяется только к выбранному геокодеру. Выбор способа ввода пароля. Возможные варианты: 1. Вручную 2. Глобальные пароли - выбор пароля из списка глобальных паролей |
|
| Проксирование запроса | Флаг | Нет | Только для геокодера Яндекс. Флаг для передачи запросов к геокодеру Яндекс через сервис-посредник |
|
| Настройки проксирования запроса | JSON | Нет | Только для геокодера Яндекс при включённом проксировании запросов Доступна подстановка глобальных паролей для аутентификации на прокси-сервере. Подробнее в разделе Пароли Настройки для проксирования. Обязательные параметры - "headers" и "host". В разделе "headers" описываются HTTP-заголовки, которые будут добавлены ко всем уходящим на прокси запросам. В разделе "host" указывается адрес прокси-сервера. |
|
| URL встроенного геокодера | Строка | Нет | Только для встроенного геокодера. Адрес сервиса с указанием порта |
Пример настроек
Общие настройки блоков описаны в отдельном разделе.
Входы
| Название входа | Тип | Обязательный | Описание |
|---|---|---|---|
| Данные | JSON | Да | Данные для слоев с идентификаторами. Вход общий: объединяет все выходы "Данные" от блока Блок "Слой данных для 3D карты". Вход может содержать дочерние входы |
| Слои | JSON | Да | Список слоев для отображения на карте с идентификаторами и настройками. Объединяет все выходы "Описание слоя" от блоков Блок "Слой данных для 3D карты". Вход может содержать дочерние входы для управления порядком отображения слоев |
| Данные карточки | Строка | Нет | Данные карточки выбранного объекта при включенных динамических карточках |
| Стиль для отображения карты | JSON | Нет | Стиль для отображения подложки карты. Заменяет указанный в настройках блока. Может динамически генерироваться в другом блоке, находящемся перед картой. |
| Объекты для размещения на карте | Объекты | Нет | Объекты, которые будут сформированы в список объектов для размещения на карте. См. раздел "Размещение заранее подготовленных объектов на карте" Вход может содержать дочерние входы |
| Объекты для позиционирования | Объекты | Нет | Массив объектов, на которых необходимо позиционировать карту при открытии Иерархический список слоев или обновлении во время события. См. раздел "Позиционирование на объекте при расчете блока" |
| Иерархический список слоев | Объекты | Нет | Список разделов для отображения иерархии в дереве слоев. См. раздел "Иерархический список слоев" Вход может быть сценарным и содержать дочерние входы До 38 версии вход носил название "Дерево папок для слоев" |
| Видимость слоев | JSON | Нет | Список слоев с указанием флага видимости для них. В случае некорректного идентификатора слоя (идентификатор должен совпадать с ID слоя, переданным входом "Данные") и/или некорректного флага видимости (словарь отличный от "visible": true/false), будет выдано предупреждение и данная строка не попадет в итоговый визуализатор |
Выходы
В блоке нет выходов
События блока
| Название выхода | Тип | Описание |
|---|---|---|
| Событие нажатия на объекте слоя | Объекты | Происходит при нажатии левой кнопкой мыши на карте. Если под курсором находятся объекты слоев, они будут выведены в этот событийный выход |
| Событие размещения объекта на карте | Объекты | Происходит при размещении объекта на карте. Подробнее см. раздел "Размещение заранее подготовленных объектов на карте" |
| Событие изменения области карты (координаты) | JSON | Происходит при изменении масштаба карты. В ответ на него передаются координаты левого верхнего и правого нижнего углов текущей области просмотра (viewport) карты (bbox) |
| Событие изменения области карты (объекты) | Объекты | Происходит при изменении масштаба карты. В ответ на него передаются объекты, которые в данный момент находятся во viewport карты |
| Изменение видимости слоев | Объекты | Происходит при изменении видимости слоев карты. Возвращаются все слои и объекты карты с указанием видим он или нет. Без координат и атрибутов. |
Описание работы блока
Блок принимает данные на входы, обрабатывает их и формирует визуализатор 3D карты. Обладает широкими возможностями настройки и функционалом.
Стилизация карты:
Основная концепция заключается в том, что каждый слой (включая слой подложки) имеет собственный стиль. В стиле прописаны все элементы подложки: озера, леса, дороги, номера домов и т.д. Стиль определяет:
- источник данных для отрисовки картографической подложки;
- способ отображения этих данных.
Стили карты создаются на основе MapBox Styles Документация по стилям MapBox Layer Style. В приложение предварительно загружено несколько стилей со свободной лицензией. В качестве источников данных для стилей могут использоваться векторные и растровые источники картографических тайлов.
Список источников, которые были проверены на работоспособность:
- Maptiler
- OSM
- Bing
- Geoserver
- Yandex Tiles API
Формирование карты:
Блок собирает информацию о слоях со своих входов и подготавливает итоговый визуализатор 3D карты.
Важно
Для корректной работы карты в ней должен быть хотя бы один слой, т.к. входы являются обязательными
Порядок слоев на входах
Для входа Слои важен порядок, в котором слои привязываются ко входу или к дочерним входам. Именно в этом порядке слои будут отображаться на карте, то есть если слой является непрозрачным и расположен выше (связь на входе заведена последней), он будет отрисован последним и перекроет все нижележащие слои.
При этом дочерние входы, как и в других случаях, позволяют управлять своим порядком.
Особенность
Гибкий механизм стилей позволяет создавать слои на основе данных другого слоя. Для этого в слое необходимо указать идентификатор источника, используемого в другом слое. Пример: для отображения полигонов в виде фигур с заливкой (fill) и их границ (line) можно использовать один и тот же набор данных, но два разных слоя. В этом случае один из слоев может не содержать собственных данных, что позволяет избежать дублирования и переиспользовать уже существующие данные.
Пример блока, у которого есть дочерние входы для входа Слои:
Расчет блока
Во время расчета блока проводится множество проверок на целостность данных для избегания проблем при отрисовке визуализатора:
- Проверка данных на наличие описания своих слоев;
- Проверка наличия объекта для позиционирования в списке слоев;
- Проверка корректности настроек;
- Проверка возможности редактирования и сохранения слоев. Эти слои должны быть из блоков с поддержкой сохранения данных, например "Справочник".
Кэширование
Для обеспечения производительности данные для блока "3D Карта" кэшируются в базе данных. При работе с событиями блок извлекает из кэша оригинальный объект, что гарантирует корректное сохранение или срабатывание события.
Позиционирование на объекте при расчете блока
При расчете блока, если на вход "Объекты для позиционирования" передан объект или массив объектов, карта автоматически позиционируется на этом объекте.
Варианты использования:
- объект может быть передан при открытии приложения;
- объект может поступить по цепочке событий.
В обоих случаях визуализатор перемещает камеру на переданный объект.
Если на вход пришел массив объектов, блок попытается вычислить видимую область, на которую будет произведено позиционирование.
Если этот вход не пустой, осуществляется проверка наличия указанных объектов в списке объектов на каком-либо слое. В случае отсутствия объекта в списке выдается предупреждение и объект удаляется из массива для позиционирования. В случае, если после расчета массив оказался пустым, позиционирования не происходит.
Важно
Объект должен быть на видимом слое, иначе позиционирование будет произведено на "пустое" место на карте
Описание работы визуализатора
Описание визуализатора
Визуализатор 3D Карта разработан на основе библиотеки maplibre.gl (MIT, https://github.com/maplibre/maplibre-gl-js). Используя стили, он выводит слои на карту и позволяет пользователю взаимодействовать с ними. В карте используется проекция Меркатора.
Сам визуализатор состоит из 3 основных частей:
- Карта;
- Панель слоев/объектов для размещения/стилей подложек;
- Панель с данными слоя (доступна только в режиме редактирования слоя).
Важно
При сохранении состояния карты, в случае выбора статического состояния, будет сохранена позиция камеры, установленная в текущий момент на карте. Эта настройка переопределит начальное положение, которое было задано в блоке.
Инструменты карты
Карта содержит панель инструментов, расположенную в правой части визуализатора. Панель инструментов позволяет вызывать инструменты и управлять картой.
- Поиск на карте - открывает раздел поиска.
- Увеличить/уменьшить масштаб карты.
- Текущее положение камеры карты относительно севера. При клике возвращает к положению "север-сверху".
- Экспорт текущей карты в png.
- Инструменты измерения на карте.
Список слоев
Слои, поступающие на карту, отображаются в левой панели согласно своим настройкам видимости и группировками. Пример панели слоев:
- При наведении курсора на слой или группу слоев появляются дополнительные элементы управления:
- скрыть или отобразить слой или группу слоев;
- позиционирование на слое (для группы слоев кнопка недоступна).
- Доступен поиск по наименованию слоя или группы слоев.
В дереве слоев, если не применяется иерархия, доступно меню при клике на правую клавишу мыши:
- Показать все слои - включить отображение всех слоев;
- Скрыть все слои - выключить отображение всех слоев;
- Показать по умолчанию - вернуть состояние видимости к первоначальному, заданному при открытии карты.
При выборе слоя можно увидеть список его объектов.
Важно
Просмотр объектов недоступен для слоев 3D объекты, Маршруты, Дуги, 3D модели, Гексагональная тепловая карта, Внешний источник данных (геосервер), Геосервер Martin
Список объектов представляет собой линейный список, где каждый элемент - это объект слоя. При просмотре слоя доступно позиционирование на объекте, его отображение или скрытие и удаление (в режиме редактирования).
Важно
При формировании списка имена для объектов берутся из поля name оригинального ряда, если оно было передано в слой. Иначе вместо имени будет отображаться уникальный GUID объекта.
Иерархический список слоев
В случае, если на вход блока "Иерархический список слоев" приходит список объектов, отражающих иерархию слоев, поведение панели изменяется. На вход должны поступать данные из блока «Справочник» с включенным флагом «Элементы имеют иерархию». В этом блоке задается иерархия и содержится описание папок для отображения в виде дерева.
Важно
Порядок элементов будет зависеть от поля Порядок (ord) в справочнике с иерархией.
Пример входных данных для иерархии папок
[
{
"pkey": {
"id": 1
},
"_params": {
"ts": [],
"lazy": [],
"parent_field": "parent",
"key_field": "id"
},
"attrs": {
"name": "город Пермь",
"ord": 1,
"parent": null
},
"child": [
{
"pkey": {
"id": 3
},
"_params": {
"ts": [],
"lazy": [],
"parent_field": "parent",
"key_field": "id"
},
"attrs": {
"name": "Больницы",
"ord": 1,
"parent": 1
},
"child": [],
"_source": ""
},
{
"pkey": {
"id": 2
},
"_params": {
"ts": [],
"lazy": [],
"parent_field": "parent",
"key_field": "id"
},
"attrs": {
"name": "Школы",
"ord": 2,
"parent": 1
},
"child": [
{
"pkey": {
"id": 8
},
"_params": {
"ts": [],
"lazy": [],
"parent_field": "parent",
"key_field": "id"
},
"attrs": {
"name": "Классы",
"ord": 4,
"parent": 2
},
"child": [],
"_source": ""
}
],
"_source": ""
}
],
"_source": "cee0515d-2053-4da7-ad00-88b37288b8a3"
},
{
"pkey": {
"id": 4
},
"_params": {
"ts": [],
"lazy": [],
"parent_field": "parent",
"key_field": "id"
},
"attrs": {
"name": "Кунгур",
"ord": 2,
"parent": null
},
"child": [
{
"pkey": {
"id": 5
},
"_params": {
"ts": [],
"lazy": [],
"parent_field": "parent",
"key_field": "id"
},
"attrs": {
"name": "Школы",
"ord": 1,
"parent": 4
},
"child": [],
"_source": ""
},
{
"pkey": {
"id": 6
},
"_params": {
"ts": [],
"lazy": [],
"parent_field": "parent",
"key_field": "id"
},
"attrs": {
"name": "Больницы",
"ord": 2,
"parent": 4
},
"child": [],
"_source": ""
},
{
"pkey": {
"id": 7
},
"_params": {
"ts": [],
"lazy": [],
"parent_field": "parent",
"key_field": "id"
},
"attrs": {
"name": "Пещеры",
"ord": 3,
"parent": 4
},
"child": [
{
"pkey": {
"id": 10
},
"_params": {
"ts": [],
"lazy": [],
"parent_field": "parent",
"key_field": "id"
},
"attrs": {
"name": "Другая Кунгурская пещера",
"ord": 1,
"parent": 7
},
"child": [],
"_source": ""
},
{
"pkey": {
"id": 9
},
"_params": {
"ts": [],
"lazy": [],
"parent_field": "parent",
"key_field": "id"
},
"attrs": {
"name": "Кунгурская ледяная пещера",
"ord": 2,
"parent": 7
},
"child": [],
"_source": ""
}
],
"_source": ""
}
],
"_source": "cee0515d-2053-4da7-ad00-88b37288b8a3"
}
]
Слои, у которых идентификатор совпадает с полем id иерархического справочника, будут привязаны к соответствующим элементам иерархии. Если совпадений идентификатора не найдено, слой будет размещен в папку "Прочие слои" на первом уровне иерархии.
Скрытие непривязанных слоев
Папка "Прочие слои" будет отображаться в том случае, если флаг "Скрывать не привязанные слои" выключен.
Разделение папок и слоев
Папка не может являться слоем. Если обнаружена привязка папки и слоя, будет выдано предупреждение и слой не будет отображаться в визуализаторе.
Дублирование слоев
Если один и тот же слой привязан к нескольким объектам, будет отображено только первое найденное вхождение слоя.
Расширенные возможности привязки - для продвинутых пользователей
В блоке "Слой данных для 3D карты" в разделе "Описание слоя" можно задать более точную привязку слоя к иерархическому справочнику.
Формат записи:
"dictMapping": {"key": "mapping", "value": 10}
- key - атрибут или первичный ключ справочника, для которого осуществляется привязка.
- value - значение атрибута.
т.е. в примере, слой будет привязан к элементу, у которого значение атрибута mapping равно 10.
В случае, если в описании слоя атрибут dictMapping не найден (осуществляется привязка по умолчанию), то формально ее можно записать следующим образом:
"dictMapping": {"key": "id", "value":
где
Так же в случае отображения иерархии будет изменено контекстное меню дерева слоев:
- Показать все слои - включить отображение всех слоев;
- Скрыть все слои - выключить отображение всех слоев;
- Показать подчиненные слои - показать все слои в текущей папке и в папках, вложенных в нее;
- Скрыть подчиненные слои - скрыть все слои в текущей папке и в папках, вложенных в нее;
- Показать слои уровня - показать все слои всех папок текущего уровня иерархии;
- Скрыть слои уровня - скрыть все слои всех папок текущего уровня иерархии;
- Показать по умолчанию - вернуть состояние видимости к первоначальному, заданному при открытии карты.
Работа со списком объектов не меняется.
Управление z-индексами слоев
В списке объектов, приходящих на вход "Иерархический список слоев" можно передать технический атрибут z_index, который будет отвечать за порядок слоя.
Особенности работы z-индекса
- Индекс должет приходить в формате целочисленного числа. Любой другой тип индекса будет вызывать ошибку при расчете блока.
- Для папок индексы не проверяются и не учитываются.
- Индексы должны идти по порядку с шагом 1. Если порядок не был соблюден, во время расчета блок попробует преобразовать индексы в нужный порядок (при большом количестве слоев может занять некоторое время).
- Дублирование индексов допускается, однако возможна некорректная работа карты (при обнаружении дубликатов будет выведено предупреждение).
Обратная совместимость со старым типом иерархии
В блоке доступна возможность использовать старый тип иерархии, основанный на поле groupName.
Включение режима обратной совместимости
Для перехода в режим обратной совместимости необходимо, чтобы один или несколько слоев карты имели атрибут groupName и не имели атрибута dictMapping. В этом случае иерархия будет работать в режиме обратной совместимости, о чем будет выведена информация при расчете блока.
z-индексы не доступны в режиме обратной совместимости.
При работе в режиме обратной совместимости все элементы из входа "Иерархический список слоев" являются папками, а слои добавляются отдельно, в зависимости от пути, указанного в поле groupName.
Поле groupName состоит из набора наименований, разделенных "|". Наименования передаются из поля attrs.name справочников, пришедших на вход "Иерархический список слоев".
Пример поля
"groupName": "Пермь|Школы"
Поиск папки будет происходить сначала по первому наименованию (Пермь), после чего в его дочерних элементах начнется поиск элемента с наименованием Школы.
Если такой элемент будет найден, слой будет записан в его дочерние элементы.
Размещение заранее подготовленных объектов на карте
В панели карты есть раздел "Объекты", где отображается список объектов, которые пользователь может размещать на карте, наполняя тот или иной слой.
Для того чтобы добавить в визуализатор объекты для размещения необходимо ко входу блока "Объекты для размещения на карте" подключить справочник с описанием этих объектов. Для корректной работы в справочнике должны быть обязательные атрибуты:
- coords - координаты. Может быть заполнен или оставлен пустым. При размещении объекта, если это точка, в это поле объекта будут прописаны координаты. Если объектом является линия или полигон, координаты в этом поле будут использованы для размещения объекта той же формы, которая задана в координатах, но в месте клика пользователя.
- source - обязательное поле. В нем задается идентификатор слоя, на который будет размещен объект.
- geometry - обязательное, тип геометрии размещаемого объекта:
- Point - точечный объект;
- LineString - линия;
- Polygon - полигон;
- groupName - имя группы для отображения иконок в списке. Если оставить пустым, иконки будут сгруппированы в группе "Неотсортированные".
- icon - имя иконки для отображения объекта. Для корректного отображения иконки в блоке карта должно быть заполнено поле "Пользовательские иконки".
Механизм размещения объектов предполагает обязательное наличие поля source. В этом поле указывается идентификатор слоя, в который будут сохранены добавленные объекты. При размещении объекта, перетаскивая его с помощью метода Drag&Drop с панели на карту, будет включено редактирование того слоя, который указан в source. Затем можно будет работать с ним, как с любым другим слоем в режиме редактирования.
Если у размещаемого объекта указаны координаты, после перетаскивания объекта на карте он будет иметь геометрию, соответствующую порядку указанных точек и расстоянию между ними, отстроенную относительно точки размещения объекта на карте.
Если же координаты размещаемого объекта не указаны, при попытке размещения объекта на карте будет включен режим редактирования слоя, указанного в source, и точка размещения станет первой точкой, относительно которой пользователю будет дана возможность построить геометрию добавляемого на карту объекта.
Важно
Для корректной работы слой, на который размещаются объекты, должен иметь возможность сохранения!
Подложки карты
В панели карты существует раздел "Стили", в котором можно выбрать стиль отображения для текущей карты. Задается в списке Стилей карты.
Важно
Выбранный стиль применяется только в рамках текущего визуализатора и не сохраняется в нем.
Выбор другого стиля осуществляется в блоке, выбрав стиль из списка Глобальные стили
Если в блоке выбран глобальный стиль, он будет выбран по умолчанию при открытии панели.
Если в блоке стиль задан вручную, на панели стилей он будет отображаться первым в списке "Стиль по-умолчанию".
Для работы с внешним источником данных слоя может потребоваться передать в адресе источника определенные заголовки или параметры аутентификации. Для этих целей предусмотрены следующие дополнительные параметры:
- host - строка, с которой начинается url; необходима для идентификации источника в списке источников для получения набора заголовков или параметров входа. В случае нескольких источников, имеющих host, значение этого параметра в разных источниках должно отличаться друг от друга и не должны являться подстрокой друг для друга, иначе источник может быть найден неверно и соответственно в запрос будут переданы заголовки другого источника.
- headers - json-объект, содержащий пары ключ - значение, для передачи в качестве заголовков запроса.
- credentials - дополнительное поле для передачи параметров входа(если необходимо).
Для растровых слоев или других, где необходимо передавать перечень адресов для получения данных, параметры немного видоизменяются:
- hosts - массив строк, являющихся началом для адресов, передаваемых для получения данных.
- headers - массив json-объектов для передачи в качестве заголовков, где индекс в массиве заголовков для передачи соответствует индексу хоста, по которому эти заголовки требуется передавать.
- credentials - массив параметров входа, соответствующих хостам по индексу в массиве.
Данный механизм так же применяется в Блок "Слой данных для 3D карты"
Пример указания адреса
{
"type": "vector",
"url": "http://stage.int.bittechno.ru:3000/test.mp_buildings_test.json",
"animate": true,
"promoteId": "id"
}
или
{
"type": "vector",
"url": "http://stage.int.bittechno.ru:3000/test.mp_buildings_test.json",
"host": ""http://stage.int.bittechno.ru:3000/",
"headers": {
"Parameter1": 123,
"Parameter2": "Some string"
}
}
или
{
"tileSize": 256,
"tiles": [
"http://192.168.88.240:8082/osm/{z}/{x}/{y}.png",
"http://192.168.88.240:8082/osm_2/{z}/{x}/{y}.png"
],
"type": "raster",
"headers": [
{
"X-Gravitee-Api-Key": "First host key"
},
{
"X-Gravitee-Api-Key": "Second host key"
}
],
"hosts": [
"http://192.168.88.240:8082/osm/",
"http://192.168.88.240:8082/osm_2/"
]
}
Редактирование объектов слоя
Для перехода в режим редактирования слоя необходимо нажать на кнопку "Редактировать" или перетащить объект для размещения на карту, что приведет к включению редактирования слоя, на котором он размещается.
Важно
Слой должен иметь возможность сохранения результатов редактирования. Разрешить редактировать слой можно с помощью флага editable в описании слоя.
Редактирование происходит для каждого объекта по отдельности. Таким образом, несколько пользователей могут редактировать один и тот же слой.
Однако
Если один из пользователей удалит объект редактирования, будет выдано предупреждение и данные по этому объекту не сохранятся, т.к. он уже был удален.
Для перевода объекта, расположенного на слое, в режим редактирования, необходимо кликнуть на него левой клавишей мыши в режиме редактирования слоя.
В режиме редактирования слоя появляется дополнительная панель.
Добавить новый объект - добавление нового объекта на карту.
- Добавление точки - достаточно кликнуть на карту и в месте нажатия появится точка.
- Линия - линия рисуется последовательным добавлением точек от первой к последней. Завершить рисование можно повторным нажатием на последнюю точку. Чтобы добавить точку на ребро, необходимо нажать на его центр (оранжевую точку).
- Полигон - полигон рисуется последовательным добавлением вершин на карту. Завершить рисование можно кликом на первую точку (полигон замкнется). Минимальное количество вершин — три. Чтобы добавить вершину на ребро, необходимо нажать на его центр (оранжевую точку).
Редактировать GeoJSON слоя - редактирование слоя в виде нативного geojson.
При нажатии показывает дополнительную панель, в которой можно увидеть geosjon слоя целиком со всеми объектами.
При нажатии на кнопку Скачать произойдет скачивание geosjon слоя.
Обратите внимание
Редактирование слоя в виде нативного geojson перезатрет все изменения, сохраненные другими пользователями.
При попытке включить редактирование, так же будет выдано предупреждение:
Редактирование объектов в виде таблицы
При нажатии в описании GeoJSON слоя "Редактирование в таблице" будет открыто новое окно, в котором все объекты редактируемого слоя представляются в виде таблицы и пользователь может менять их поля.
Карточки объектов
При клике на объект откроется его карточка (если указан атрибут popup в разделе "Атрибуты для передачи на слой" в настройках блока). Если на месте нажатия расположено несколько объектов, пользователь сможет переключаться между ними.
Карточка поддерживает позиционирование на объекте и приближение к нему.
Важно
При малом масштабе (низком уровне зума) одна карточка может охватывать большое количество объектов. При приближении карты выбранный объект может сместиться относительно карточки, так как изменение уровня зума влияет на позиционирование объектов.
При переключении между объектами карта будет позиционироваться на выбранном.
В режиме редактирования карточка меняется и представляет собой набор атрибутов объекта, которые можно изменять.
В карточке доступен раздел с информацией. В нем отображаются пространственные характеристики объекта - его размеры и координаты.
Анимация
Если у объекта есть атрибут animate=true и он был передан на карту, изменение положения объекта будет произведено с анимацией движения.
Если анимация тормозит в браузере Google Chrome
флаг "GPU rasterization" в chrome://flags должен быть включен
Отображение координат курсора
При включенной настройке "Отображать координаты курсора" и выборе позиции на карту будут выведены координаты курсора мыши.
Поиск
При включенной настройке блока нажатие на кнопку поиска открывает строку поиска. После ввода запроса и нажатия Enter выполняется поиск по всем объектам всех слоев по наименованиям и атрибутам (кроме исключенных). При использовании геокодера поиск идет с подстановкой адресов, а переход на карте — по полученным координатам.
Особенность работы Яндекс.Геокодера
Яндекс.Геокодер возвращает одинаковые результаты как при поисковых подсказках, так и при полноценном поиске. API-сервис использует единый метод для обоих типов запросов, поэтому итоговые данные будут идентичны.
Особенности работы поиска
- При поиске на карте учитываются только объекты в пределах области видимости карты;
- При выборе встроенного геокодера для поиска поддерживается поиск с учетом опечаток.
Особенность работы геокодера DaData
При поиске на карте учитывается зона видимости с радиусом до 100км. При увеличении масштаба поиск не ограничивается текущей областью видимости. Ограничение связано с особенностями API-сервиса DaData https://confluence.hflabs.ru/pages/viewpage.action?pageId=990871806
Инструменты измерения на карте
При нажатии на кнопку "Панель измерений" (доступна при включении соответствующей настройки) открывается "Панель измерений". Доступно 3 варианта:
- Линейный объект
- Единицы измерения: километры и метры;
- При рисовании измеряется длина каждого сегмента на карте
; - В панели измеряется общая длина в единицах измерения;
-
В панели измеряется количество сегментов линии.
-
Площадной объект
- Единицы измерения: километры и метры (т.к. объект площадной - длина линейная, площадь в квадратных единицах);
- При рисовании измеряется длина каждого сегмента периметра объекта
; - Для завершения рисования необходимо нажать Enter;
-
В панели измеряется периметр объекта и его площадь.
-
Радиус окружности
- Единицы измерения: километры и метры;
- При рисовании необходимо нажать в нужном месте карты и "растянуть" окружность до нужного радиуса. При этом второе нажатие завершит рисование;
- На карте и в панели измеряется длина радиуса и площадь окружности.

Важно
При рисовании окружности нужно учитывать искажения проекции карты.
Геосервер
Работа со слоями типа "Внешний источник данных (геосервер)" и "Геосервер Martin" отличается от других слоев.
- Карта запрашивает слои с сервера и получает их в виде векторных данных.
- Слои не редактируемые и не содержат списка объектов.
- Слои не поддерживают поиск.
- Слои поддерживают отображение карточек, если в данных объекта есть атрибут popup.
- При нажатии на слой геосервера в выход блока "Событие нажатия на объекте слоя" передаются все объекты со слоя геосервера, на которые пришлось нажатие.
Печать
Для корректной печати в настройках необходимо включить параметр "Фон"
Настройки визуализатора
Общий список доступен на странице Настройки визуализаторов
Дополнительными настройками являются:
- Возможность сохранения текущего положения карты при сохранении пресета.
























