Использование пользовательских изображений на картах

SberMobile Server поддерживает добавление собственных изображений на карты. Текущая статья описывает, как настроить инструментальную панель для использования пользовательских SVG-изображений на карте.

Добавление пользовательских нестандартных изображений в модель Изображения устройств

Изображения устройств - это стандартная модель, используемая для хранения изображений и их отображения на картах. Если вы не можете найти ее в контейнере Модели, создайте ее в Ресурсах.

Расширяйте контейнер Модели в Системном дереве. Правой клавишей мыши щелкните модель Изображения устройств и выберите Редактировать дополнительные свойства.

Отключите режим чтения, щелкнув значок замка.

Нажмите кнопку Открыть... и добавьте собственное SVG-изображение с помощью кнопки Добавить строку (), указав имя изображения.

Из окна Изображения устройств можно добавить новое изображение, добавив строку (1), задав имя устройства (2) и загрузив соответствующее изображение (3).

В следующем примере будет использоваться изображение с именем сервера.

Добавить пользовательский тип устройства ко всем устройствам используя относительную модель

Создайте новую модель, выбрав пункт Создать в контекстном меню контейнера Модели.

Создайте модель со свойствами, указанными в следующей таблице:

Свойство

Значение

Заметки

Имя

deviceType

Имя модели, используемой при формировании пути контекста.

Описание

Тип устройства

Описание модели, отображаемой в пользовательском интерфейсе.

Тип

Относительный

Тип модели. Относительные модели могут быть "прикреплены" к другим контекстам в соответствии с Правилом валидности.

Выражение расширенного поиска

contains({.:# type},"device")

Определяет, к каким контекстам будет прикреплена данная относительная модель.

Правила обновления пригодности

  • Маска контекста - users.*.devices.*.

  • Событие - Synchronized

  • Цель - оставить пустым

Указывает условия, при которых выражение валидности будет переоценено.

Нажмите OK, чтобы сохранить и открыть окно Конфигурация модели. Перейдите на вкладку Переменные модели (1) и нажмите Добавить строку (2). Введите данные, указанные в следующей таблице (3), а затем откройте поле Формат (4).

Поле

Значение

Описание

Имя

type

Описание

Тип устройства

Возможность записи

True

В меню Формат настройте формат переменной со следующими данными:

Свойство

Значение

Описание

Минимальное количество записей

1

Поскольку таблица переменных должна содержать одну строку и один столбец, установите значение 1.

Максимальное количество записей

1

Поскольку таблица переменных должна иметь одну строку и один столбец, установите значение 1.

Поля

  • Название - deviceType

  • Тип - String

Определите тип данных переменной в виде строки.

Кликните OK для сохранения и закрытия.

Выберите устройство из контекста Устройства, чтобы назначить тип. В текущем примере уже создано виртуальное устройство с именем Сервер 1. Откройте контекстное меню устройства и выберите Редактировать дополнительные свойства.

Перейдите на вкладку Тип устройства (1), переключите режим записи (2) и укажите имя устройства.

Кликните OK для сохранения и закрытия.

Указание координат устройства

Чтобы отобразить устройство на карте, укажите его широту и долготу. В контекстном меню устройства выберите Редактировать свойства устройства. На вкладке Общие свойства устройства введите значение для Выражения широты и Выражения долготы.

Нажмите кнопку OK для сохранения и закрытия.

Повторите процесс добавления выражений широты и долготы для каждого устройства, которое должно быть включено в карту.

Создание Инструментальной панели с компонентом карты

Нажмите кнопку Создать в контекстном меню инструментальной панели.

Заполните поля Имя и Описание и нажмите OK. В приведенном ниже примере имя и описание инструментальной панели - Карта.

В только что созданном контекстном меню инструментальной панели нажмите Редактировать инструментальную панель, чтобы открыть Конструктор web UI.

В Конструкторе web UI перетащите компонент Карта из палитры компонентов на сетку.

Перетащите правый нижний угол компонента карты, чтобы увеличить площадь экрана, которую он занимает.

Добавление маркеров на карту

Маркер можно поместить в точку на карте, указав широту и долготу. Каждый маркер должен быть помещен в отдельный слой. На следующих шагах создайте слой, поместите маркер в слой, представляющий устройство Сервер 1, а затем загрузите пользовательское изображение вместе со слоем.

Создание слоя

Откройте редактор свойств карты, а затем откройте для редактирования свойство "Слои" .

Добавьте один слой на карту, нажав кнопку Добавить Строку и добавив указанные данные.

Поле

Значение

Описание

ID

1

Текущий идентификатор слоя, на который должны ссылаться все связанные с ним маркеры.

Название

1

Имя при ссылке на слой на языке выражений.

Описание

Один к одному

Описание слоя, которое будет показано в пользовательском интерфейсе.

Создать маркер из устройства

Маркеры будут созданы с помощью привязок компонентов, поскольку они должны автоматически обновляться в соответствии с изменениями в устройстве. В редакторе свойств карты откройте привязки для маркеров.

В меню Привязать свойство создайте новую привязку со следующими данными:

Свойство

Значение

Заметки

Цель

form/map0:markers

Текущая цель, в данном случае таблица-контейнер всех маркеров.

Выражение

addRecords( {form/map0:markers},
1, // Идентификатор маркера должен быть уникальным для каждого маркера
1, // Идентификатор слоя, указывающий, на каком слое следует разместить маркер
{users.admin.devices.server1:location$latitude},
{users.admin.devices.server1:location$longitude},
"", // Появление при наведении
"", // Смещение Z-индекса появления
"", // Перетаскиваемый
"", // Параметры всплывающего окна
"", // Параметры подсказки
{users.admin.devices.server1:type$deviceType} // Идентификатор маркера стиля, который нужно применить к маркеру
)

Мы добавляем записи в таблицу Маркеры {form/map0:markers} с информацией от устройства Сервер 1.

  • Первое поле - это идентификатор маркера, жестко закодированный как 1, но он должен быть уникальным для каждого маркера в слое.

  • Второе поле - идентификатор слоя, который пока жестко кодируется в 1.

  • Третье и четвертое поля - это широта и долгота устройства, на которые ссылаются {users.admin.devices.server1:location$latitude} и {users.admin.devices.server1:location$longitude} соответственно.

  • Поля от "Появление при наведении" до "Настройки Всплывающей Подсказки" можно пока оставить пустыми, и мы присвоим им пустую строку "".

  • Последнее поле используется для указания иконки, которую следует применить к маркеру. Текущее значение должно соответствовать идентификатору строки из таблицы " Стиль маркера". Мы хотим стилизовать маркер в соответствии с типом устройства, поэтому установим значение, полученное по ссылке {users.admin.devices.server1:type$deviceType}.

При запуске

True

Установите значение true, чтобы активировать привязку при загрузке инструментальной панели.

Стиль маркера с пользовательским изображением

Аналогично вышеописанному откройте привязки Стили маркеров и добавьте следующие данные

Свойство

Значение

Заметки

Цель

form/map0:markersStyles

Текущая цель, в данном случае таблица, содержащая стили маркеров.

Выражение

addRecords( {form/map0:markerStyles},
{users.admin.models.deviceImages:deviceImages$name[3]},
{users.admin.models.deviceImages:deviceImages$image[3]},
{users.admin.models.deviceImages:deviceImages$image[3]}
)

Мы добавляем записи в таблицу Стили маркеров {form/map0:markerStyles} с устройства Сервер 1.

  • Первым полем будет идентификатор стиля, которому соответствует поле Стиль строки, добавленной на предыдущем шаге в таблицу Маркеров. Привязка выше устанавливает идентификатор маркера в соответствии с типом устройства. В текущем примере мы назначили тип устройства как Сервер. На практике мы можем загрузить все изображения устройств в таблицу Стили маркеров , но в этом случае мы загрузим только то изображение, которое соответствует Серверу. Четвертая строка таблицы данных Изображения устройств имеет имя Server, и мы ссылаемся на нее с помощью {users.admin.models.deviceImages:deviceImages$name[3]}.

  • Второе и третье поля - это изображения, которые будут отображаться по умолчанию для маркера и при выборе маркера. В обоих случаях отображается значок сервера, на который можно сослаться с помощью: {users.admin.models.deviceImages:deviceImages$image[3]}, которая является изображением с именем Сервер.

При запуске

True

Установите значение true, чтобы активировать привязку при загрузке инструментальной панели.

Просмотр результата

Наконец, запустите инструментальную панель и просмотрите результат. Перейдите к широте и долготе, указанным для устройства. В нашем случае мы видим сервер, расположенный на острове Сан-Сальвадор на Багамах.