Редактирование геометрий геообъектов на карте
Дополнение Maps позволяет пользователям визуально редактировать геометрии геообъектов. Вместо редактирования данных геометрии в виде текста в поле, пользователи теперь могут взаимодействовать с геометриями непосредственно на карте. Этот интуитивный интерфейс позволяет пользователям перемещать геометрии, изменять линии и выполнять другие правки визуально, упрощая процесс управления геоданными.
И VectorSource, и DataVectorSource поддерживают следующие режимы редактирования сущностей:
-
Режим выбора: позволяет пользователям выбирать сущности на карте.
-
Режим перетаскивания: позволяет пользователям перетаскивать сущности в новые места на карте.
-
Режим изменения: позволяет пользователям изменять геометрию сущностей, например, вершины и линии.
-
Режим удаления: позволяет пользователям удалять сущности с карты.
Режим выбора
Чтобы включить выбор сущностей, установите атрибут featureSelectEnabled для векторного источника в значение true.
<maps:vector id="layer">
<maps:dataVectorSource id="source"
featureSelectEnabled="true"
dataContainer="regionsDc"
property="area"/>
</maps:vector>
Когда режим включен, пользователи могут выбирать сущности на карте, нажимая на них. Для множественного выбора пользователи могут использовать комбинацию Shift + щелчок.
| Когда режим выбора используется вместе с режимами перетаскивания или изменения, только выбранные сущности можно перетаскивать или изменять. |
Режим выбора предоставляет событие выбора для обработки выделения и снятия выделения с сущностей. Для получения более подробной информации смотрите раздел События источника.
Вы также можете стилизовать выбранные сущности, чтобы визуально их выделить. Для получения дополнительной информации обратитесь к разделу Стили режима выбора.
Режим перетаскивания
Чтобы включить перетаскивание сущностей, установите атрибут featureDragEnabled для векторного источника в значение true. Это активирует кнопку управления
на карте, которая включает режим перетаскивания.
<maps:vector id="layer">
<maps:dataVectorSource id="source"
featureDragEnabled="true"
dataContainer="regionsDc"
property="area"/>
</maps:vector>
Например, вот как выглядит режим перетаскивания, когда он включен:
Этот режим предоставляет события для обработки начала и окончания перетаскивания; для получения более подробной информации смотрите раздел События источника.
Режим изменения
Чтобы включить изменение сущностей, установите атрибут featureModifyEnabled для векторного источника в значение true.
<maps:vector id="layer">
<maps:dataVectorSource id="source"
featureModifyEnabled="true"
dataContainer="regionsDc"
property="area"/>
</maps:vector>
Это активирует кнопку управления
на карте, которая включает режим изменения. В этом режиме отображается вершина, которую можно перетащить для изменения сущности или нажать для ее удаления.
Например, вот как выглядит режим изменения, когда он включен:
Этот режим предоставляет события для обработки начала и окончания изменений. Для получения дополнительной информации смотрите раздел События источника.
Вы также можете стилизовать сгенерированные точки вершин. Для получения более подробной информации смотрите раздел Стили режима изменения.
Режим удаления
Начиная с Jmix 3.1
Чтобы включить удаление сущностей, установите атрибут featureDeleteEnabled для векторного источника в значение true. Удаление не зависит от режима изменения, поэтому их можно включать по отдельности.
<maps:vector id="featureLayer">
<maps:vectorSource id="featureSource"
featureModifyEnabled="true"
featureDeleteEnabled="true"/>
</maps:vector>
Это активирует кнопку управления
на карте, которая включает режим удаления. Когда этот режим активен, пользователи могут нажать на сущность, и перед удалением появится диалоговое окно подтверждения. Кнопка отображается, если удаление включено хотя бы для одного источника на карте.
При удалении сущности источник генерирует событие. См. раздел SourceFeatureDeleteEvent.
Если featureDeleteEnabled не задан, удаление по умолчанию отключено. Если свойство приложения jmix.maps.ui.feature-modify-includes-delete равно true, режим изменения также включает удаление для такого источника. Так было до Jmix 3.1, когда featureModifyEnabled="true" всегда включал и удаление. Значение свойства по умолчанию — false. При апгрейде проекта с более ранней версии Studio устанавливает его в true, чтобы сохранить прежнее поведение. Чтобы управлять удалением для каждого источника отдельно, задайте featureDeleteEnabled для нужных источников и удалите это свойство.
В следующей таблице показано, когда удаление включено для источника:
featureDeleteEnabled |
jmix.maps.ui.feature-modify-includes-delete |
featureModifyEnabled |
Удаление |
|---|---|---|---|
не задан |
|
любое |
отключено |
не задан |
|
|
отключено |
не задан |
|
|
включено |
|
любое |
любое |
отключено |
|
любое |
любое |
включено |