在地图中编辑地理对象几何形状
地图扩展组件支持对地理对象的几何形状进行可视化编辑。与之前只能在输入字段中编辑文本不同,现在用户可以直接在地图上与几何图形交互。用户可以在这个界面中可视化地移动几何形状,修改形状并执行其他编辑,从而简化了地理数据管理过程。
VectorSource 和 DataVectorSource 都支持以下编辑模式:
-
选择模式:用户可以选择地图上的要素。
-
拖拽模式:用户可以拖拽地图要素至新的位置。
-
编辑模式:用户可以修改要素的几何图形,例如顶点和边。
-
删除模式: 用户可以删除地图上的要素。
选择模式
启用选择模式:设置 矢量源 的 featureSelectEnabled 属性为 true。
<maps:vector id="layer">
<maps:dataVectorSource id="source"
featureSelectEnabled="true"
dataContainer="regionsDc"
property="area"/>
</maps:vector>
该模式启用后,用户可以通过点击地图上的要素进行选择。需要多选时,可按下 Shift 并进行选择。
| 当选择模式与拖拽或编辑模式同时启用时,仅所选择的要素可以进行拖拽或编辑。 |
选择模式提供了一个选择事件,可以用来处理要素的选择或反选。参阅 源事件。
还可以对所选的要素定制不同的样式进行突出显示。参阅 选择模式样式。
编辑模式
启用编辑模式:设置 矢量源 的 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 |
删除功能 |
|---|---|---|---|
未设置 |
|
任意值 |
禁用 |
未设置 |
|
|
禁用 |
未设置 |
|
|
启用 |
|
任意值 |
任意值 |
禁用 |
|
任意值 |
任意值 |
启用 |