Class: Modify

ol/interaction/Modify~Modify


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

Interaction for modifying feature geometries. To modify features that have been added to an existing source, construct the modify interaction with the source option. If you want to modify features in a collection (for example, the collection used by a select interaction), construct the interaction with the features option. The interaction must be constructed with either a source or features option.

Cartesian distance from the pointer is used to determine the features that will be modified. This means that geometries will only be considered for modification when they are within the configured pixelTolerance. For point geometries, the hitDetection option can be used to match their visual appearance.

By default, the interaction will allow deletion of vertices when the alt key is pressed. To configure the interaction with a different condition for deletion, use the deleteCondition option.

new Modify(options)

Name Type Description
condition Condition | undefined

A function that takes a MapBrowserEvent and returns a boolean to indicate whether that event will be considered to add or move a vertex to the sketch. Default is primaryAction.

deleteCondition Condition | undefined

A function that takes a MapBrowserEvent and returns a boolean to indicate whether that event should be handled. By default, singleClick with altKeyOnly results in a vertex deletion.

insertVertexCondition Condition | undefined

A function that takes a MapBrowserEvent and returns a boolean to indicate whether a new vertex should be added to the sketch features. Default is always.

pixelTolerance number (defaults to 10)

Pixel tolerance for considering the pointer close enough to a segment or vertex for editing.

style StyleLike | FlatStyleLike | undefined

Style used for the modification point or vertex. For linestrings and polygons, this will be the affected vertex, for circles a point along the circle, and for points the actual point. If not configured, the default edit style is used (see Style). When using a style function, the point feature passed to the function will have an existing property - indicating whether there is an existing vertex underneath or not, a features property - an array whose entries are the features that are being modified, and a geometries property - an array whose entries are the geometries that are being modified. Both arrays are in the same order. The geometries are only useful when modifying geometry collections, where the geometry will be the particular geometry from the collection that is being modified.

source VectorSource | undefined

The vector source with features to modify. If a vector source is not provided, a feature collection must be provided with the features option.

hitDetection boolean | BaseVectorLayer | undefined

When configured, point features will be considered for modification based on their visual appearance, instead of being within the pixelTolerance from the pointer location. When a BaseVectorLayer is provided, only the rendered representation of the features on that layer will be considered.

features Collection<Feature> | undefined

The features the interaction works on. If a feature collection is not provided, a vector source must be provided with the source option.

wrapX boolean (defaults to false)

Wrap the world horizontally on the sketch overlay.

snapToPointer boolean (defaults to !hitDetection)

The vertex, point or segment being modified snaps to the pointer coordinate when clicked within the pixelTolerance.

Fires:

Extends

Observable Properties

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

true if the interaction is active, false otherwise.

Methods

canInsertPoint(){boolean}

Check if a point can be inserted to the current linestring or polygon at the current pointer position.

Returns:
A point can be inserted at the current pointer position.

canRemovePoint(){boolean}

Check if a point can be removed from the current linestring or polygon at the current pointer position.

Returns:
A point can be deleted at the current pointer position.

Increases the revision counter and dispatches a 'change' event.

dispatchEvent(event){boolean | undefined} inherited

Dispatches an event and calls all listeners listening for events of this type. The event parameter can either be a string or an Object with a type property.

Name Type Description
event BaseEvent | string

Event object.

Returns:
false if anyone called preventDefault on the event object or if any of the listeners returned false.

Gets a value.

Name Type Description
key string

Key name.

Returns:
Value.

Return whether the interaction is currently active.

Returns:
true if the interaction is active, false otherwise.

getKeys(){Array.<string>} inherited

Get a list of object property names.

Returns:
List of property names.

Get the map associated with this interaction.

Returns:
Map.

Get the overlay layer that this interaction renders the modification point or vertex to.

Returns:
Overlay layer.

getPointerCount(){number} inherited

Returns the current number of pointers involved in the interaction, e.g. 2 when two fingers are used.

Returns:
The number of pointers.

getProperties(){Object.<string, *>} inherited

Get an object of all property names and values.

Returns:
Object.

getRevision(){number} inherited

Get the version number for this object. Each time the object is modified, its version number will be incremented.

Returns:
Revision.

insertPoint(coordinate){boolean}

Inserts the vertex currently being pointed to the current linestring or polygon.

Name Type Description
coordinate Coordinate | undefined

If provided, the pointer will be set to the provided coordinate. If not, the current pointer coordinate will be used.

Returns:
A vertex was inserted.

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

Listen for a certain type of event.

Name Type Description
type string | Array.<string>

The event type or array of event types.

listener function

The listener function.

Returns:
Unique key for the listener. If called with an array of event types as the first argument, the return will be an array of keys.

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

Listen once for a certain type of event.

Name Type Description
type string | Array.<string>

The event type or array of event types.

listener function

The listener function.

Returns:
Unique key for the listener. If called with an array of event types as the first argument, the return will be an array of keys.

removePoint(coordinate){boolean}

Removes the vertex currently being pointed from the current linestring or polygon.

Name Type Description
coordinate Coordinate | undefined

If provided, the pointer will be set to the provided coordinate. If not, the current pointer coordinate will be used.

Returns:
True when a vertex was removed.

set(key, value, silent) inherited

Sets a value.

Name Type Description
key string

Key name.

value *

Value.

silent boolean | undefined

Update without triggering an event.

setActive(active)

Activate or deactivate the interaction.

Name Type Description
active boolean

Active.

setProperties(values, silent) inherited

Sets a collection of key-value pairs. Note that this changes any existing properties and adds new ones (it does not remove any existing properties).

Name Type Description
values Object.<string, *>

Values.

silent boolean | undefined

Update without triggering an event.

un(type, listener) inherited

Unlisten for a certain type of event.

Name Type Description
type string | Array.<string>

The event type or array of event types.

listener function

The listener function.

unset(key, silent) inherited

Unsets a property.

Name Type Description
key string

Key name.

silent boolean | undefined

Unset without triggering an event.