Class: Modify

ol/interaction/Modify~Modify


import Modify from 'ol/interaction/Modify.js';

修改要素几何对象的交互。要修改已添加到现有数据源中的要素,请使用 source 选项构造修改交互。如果要修改集合中的要素(例如,选择交互使用的集合),请使用 features 选项构造交互。此交互必须使用 sourcefeatures 选项之一来构造。

使用与指针的笛卡尔距离来确定要修改的要素。这意味着只有当几何图形在配置的 pixelTolerance 范围内时,才会被考虑进行修改。对于点几何图形,可以使用 hitDetection 选项来匹配其视觉外观。

默认情况下,按下 alt 键时交互将允许删除顶点。要配置不同的删除条件,请使用 deleteCondition 选项。

new Modify(options)

Name Type Description
condition Condition | undefined

接受 MapBrowserEvent 并返回布尔值以指示该事件是否将被视为向草图添加或移动顶点的函数。默认为 primaryAction

deleteCondition Condition | undefined

接受 MapBrowserEvent 并返回布尔值以指示是否应处理该事件的函数。默认情况下,singleClick 加上 altKeyOnly 会导致顶点删除。此组合通过将两个条件检查包装在一个函数中来处理:

import { altKeyOnly, singleClick } from 'ol/events/condition.js';

function (event) {
  return altKeyOnly(event) && singleClick(event)
}
insertVertexCondition Condition | undefined

接受 MapBrowserEvent 并返回布尔值以指示是否应向草图要素添加新顶点的函数。默认为 always。

pixelTolerance number (defaults to 10)

将指针视为足够接近线段或顶点以进行编辑的像素容差。

style StyleLike | FlatStyleLike | undefined

用于修改点或顶点的样式。对于线字符串和多边形,这将是受影响的顶点;对于圆,是沿圆的一个点;对于点,是实际的点。如果未配置,将使用默认编辑样式(参见 Style)。使用样式函数时,传递给函数的点要素将具有 existing 属性(指示下方是否存在现有顶点)、features 属性(包含正在修改的要素的数组)和 geometries 属性(包含正在修改的几何图形的数组)。两个数组的顺序相同。geometries 仅在修改几何集合时有意义,其中几何图形将是正在修改的集合中的特定几何图形。

source VectorSource | undefined

包含要修改要素的矢量数据源。如果未提供矢量数据源,则必须通过 features 选项提供要素集合。

hitDetection boolean | BaseVectorLayer | undefined

配置后,点要素将根据其视觉外观被考虑修改,而不是在指针位置的 pixelTolerance 范围内。当提供 BaseVectorLayer 时,只考虑该图层上要素的渲染表示。

features Collection<要素> | undefined

交互操作的要素。如果未提供要素集合,则必须通过 source 选项提供矢量数据源。

filter Filter函数 | undefined

接受 要素 并在要素可被修改时返回 true,否则返回 false 的函数。

trace boolean | Condition (defaults to false)

追踪另一个几何图形的一部分。当两个相邻顶点被拖动到追踪目标上,且中间没有其他修改操作时,追踪开始。

traceSource VectorSource | undefined

要追踪的要素数据源。如果追踪处于活动状态且未提供 traceSource,将使用交互的 source。追踪要求交互配置了 traceSourcesource

wrapX boolean (defaults to false)

在草图覆盖物上水平环绕世界。

snapToPointer boolean (defaults to !hitDetection)

pixelTolerance 范围内点击时,正在修改的顶点、点或线段将吸附到指针坐标。

sharedVerticesEqual function | undefined

接受两个坐标并返回它们是否应被视为相同以进行顶点匹配的函数。默认情况下,比较所有坐标维度。当要素具有混合坐标维度(如 XY 和 XYZ)但仍应被视为在同一 2D 位置共享顶点时,此函数很有用。

触发事件:

Extends

Observable Properties

Name Type Settable ObjectEvent type Description
active boolean yes change:active

如果交互处于激活状态则为true,否则为false

Methods

canInsertPoint(){boolean}

检查是否可以在当前指针位置向当前线字符串或多边形插入点。

返回值:
可以在当前指针位置插入点。

canRemovePoint(){boolean}

检查是否可以从当前线字符串或多边形在当前指针位置移除点。

返回值:
可以在当前指针位置删除点。

增加修订计数器并分发 'change' 事件。

dispatchEvent(event){boolean | undefined} inherited

分发事件并调用所有监听此类型事件的监听器。事件参数可以是一个字符串或一个 具有 type 属性的对象。

Name Type Description
event BaseEvent | string

事件对象。

返回值:
如果有人在事件对象上调用了 preventDefault 或任何监听器返回 false,则返回 false

获取一个值。

Name Type Description
key string

键名。

返回值:
值。

返回交互当前是否激活。

返回值:
true 表示交互处于活动状态,否则为 false

getKeys(){Array.<string>} inherited

获取对象属性名列表。

返回值:
属性名列表。

获取与此交互关联的地图。

返回值:
地图。

获取此交互渲染修改点或顶点的覆盖物图层。

返回值:
覆盖物图层。

getPointerCount(){number} inherited

返回当前参与交互的指针数量,例如使用两根手指时为 2。

返回值:
指针数量。

getProperties(){NoInfer.<Properties>} inherited

获取包含所有属性名和值的对象。

返回值:
对象。

getRevision(){number} inherited

获取此对象的版本号。 每次对象被修改时,其版本号将递增。

返回值:
版本号。

insertPoint(coordinate){boolean}

将当前指向的顶点插入到当前线串或多边形中。

Name Type Description
coordinate Coordinate | undefined

如果提供,指针将设置为提供的坐标。如果未提供,将使用当前指针坐标。

返回值:
已插入顶点。

on(type, listener){EventsKey | Array<EventsKey>} inherited

监听特定类型的事件。

Name Type Description
type string | Array.<string>

事件类型或事件类型数组。

listener function

监听器函数。

返回值:
监听器的唯一键。如果第一个参数是事件类型数组,则返回键的数组。

once(type, listener){EventsKey | Array<EventsKey>} inherited

仅监听一次特定类型的事件。

Name Type Description
type string | Array.<string>

事件类型或事件类型数组。

listener function

监听器函数。

返回值:
监听器的唯一键。如果第一个参数是事件类型数组,则返回键的数组。

removePoint(coordinate){boolean}

从当前线串或多边形中移除当前指向的顶点。

Name Type Description
coordinate Coordinate | undefined

如果提供,指针将设置为提供的坐标。如果未提供,将使用当前指针坐标。

返回值:
当移除顶点时返回 true。

set(key, value, silent) inherited

设置一个值。

Name Type Description
key string

键名。

value *

值。

silent boolean | undefined

更新但不触发事件。

setActive(active)

激活或停用交互。

Name Type Description
active boolean

是否激活。

setProperties(values, silent) inherited

设置一组键值对。 注意,这会更改任何现有属性并添加新属性(不会移除任何现有属性)。

Name Type Description
values Partial.<NoInfer.<Properties>>

值。

silent boolean | undefined

更新但不触发事件。

un(type, listener) inherited

取消监听特定类型的事件。

Name Type Description
type string | Array.<string>

事件类型或事件类型数组。

listener function

监听器函数。

unset(key, silent) inherited

取消设置一个属性。

Name Type Description
key string

键名。

silent boolean | undefined

取消设置但不触发事件。