OpenLayers.Control.ModifyFeature

Control to modify features.  When activated, a click renders the vertices of a feature - these vertices can then be dragged.  By default, the delete key will delete the vertex under the mouse.  New features are added by dragging “virtual vertices” between vertices.  Create a new control with the OpenLayers.Control.ModifyFeature constructor.

Inherits From

Summary
OpenLayers.Control.ModifyFeatureControl to modify features.
Properties
bySegment{Boolean} If set to true, one segment at a time will be editable (the one under the mouse cursor on hover).
documentDrag{Boolean} If set to true, dragging vertices will continue even if the mouse cursor leaves the map viewport.
geometryTypes{Array(String)} To restrict modification to a limited set of geometry types, send a list of strings corresponding to the geometry class names.
clickout{Boolean} Unselect features when clicking outside any feature.
toggle{Boolean} Unselect a selected feature on click.
standalone{Boolean} Set to true to create a control without SelectFeature capabilities.
layer{OpenLayers.Layer.Vector}
feature{OpenLayers.Feature.Vector} Feature currently available for modification.
vertex{OpenLayers.Feature.Vector} Vertex currently being modified.
vertices{Array(OpenLayers.Feature.Vector)} Verticies currently available for dragging.
virtualVertices{Array(OpenLayers.Feature.Vector)} Virtual vertices in the middle of each edge.
handlers{Object}
deleteCodes{Array(Integer)} Keycodes for deleting verticies.
virtualStyle{Object} A symbolizer to be used for virtual vertices.
vertexRenderIntent{String} The renderIntent to use for vertices.
mode{Integer} Bitfields specifying the modification mode.
createVertices{Boolean} Create new vertices by dragging the virtual vertices in the middle of each edge.
modified{Boolean} The currently selected feature has been modified.
radiusHandle{OpenLayers.Feature.Vector} A handle for rotating/resizing a feature.
dragHandle{OpenLayers.Feature.Vector} A handle for dragging a feature.
onModificationStart{Function} Deprecated.
onModification{Function} Deprecated.
onModificationEnd{Function} Deprecated.
Constructor
OpenLayers.Control.ModifyFeatureCreate a new modify feature control.
Functions
createVirtualVertexCreate a virtual vertex in the middle of the segment.
destroyTake care of things that are not handled in superclass.
activateActivate the control.
deactivateDeactivate the control.
beforeSelectFeatureCalled before a feature is selected.
selectFeatureSelect a feature for modification in standalone mode.
unselectFeatureCalled when the select feature control unselects a feature.
dragStartCalled by the drag handler before a feature is dragged.
dragVertexCalled by the drag handler with each drag move of a vertex.
dragCompleteCalled by the drag handler when the feature dragging is complete.
setFeatureStateCalled when the feature is modified.
resetVertices
handleKeypressCalled by the feature handler on keypress.
collectVerticesCollect the vertices from the modifiable feature’s geometry and push them on to the control’s vertices array.
collectDragHandleCollect the drag handle for the selected geometry.
collectRadiusHandleCollect the radius handle for the selected geometry.
setMapSet the map property for the control and all handlers.
handleMapEvents
moveLayerToTopMoves the layer for this handler to the top, so mouse events can reach it.
moveLayerBackMoves the layer back to the position determined by the map’s layers array.
Constants
RESHAPE{Integer} Constant used to make the control work in reshape mode
RESIZE{Integer} Constant used to make the control work in resize mode
ROTATE{Integer} Constant used to make the control work in rotate mode
DRAG{Integer} Constant used to make the control work in drag mode

Properties

bySegment

{Boolean} If set to true, one segment at a time will be editable (the one under the mouse cursor on hover).  This supports editing much larger geometries.  This requires the rbush library (https://github.com/mourner/rbush) for spatial indexing.  Default is false.

documentDrag

{Boolean} If set to true, dragging vertices will continue even if the mouse cursor leaves the map viewport.  Default is false.

geometryTypes

{Array(String)} To restrict modification to a limited set of geometry types, send a list of strings corresponding to the geometry class names.

clickout

{Boolean} Unselect features when clicking outside any feature.  Default is true.

toggle

{Boolean} Unselect a selected feature on click.  Default is true.

standalone

{Boolean} Set to true to create a control without SelectFeature capabilities.  Default is false.  If standalone is true, to modify a feature, call the selectFeature method with the target feature.  Note that you must call the unselectFeature method to finish feature modification in standalone mode (before starting to modify another feature).

feature

{OpenLayers.Feature.Vector} Feature currently available for modification.

vertex

{OpenLayers.Feature.Vector} Vertex currently being modified.

vertices

{Array(OpenLayers.Feature.Vector)} Verticies currently available for dragging.

virtualVertices

{Array(OpenLayers.Feature.Vector)} Virtual vertices in the middle of each edge.

handlers

{Object}

deleteCodes

{Array(Integer)} Keycodes for deleting verticies.  Set to null to disable vertex deltion by keypress.  If non-null, keypresses with codes in this array will delete vertices under the mouse.  Default is 46 and 68, the ‘delete’ and lowercase ‘d’ keys.

virtualStyle

{Object} A symbolizer to be used for virtual vertices.

vertexRenderIntent

{String} The renderIntent to use for vertices.  If no virtualStyle is provided, this renderIntent will also be used for virtual vertices, with a fillOpacity and strokeOpacity of 0.3.  Default is null, which means that the layer’s default style will be used for vertices.

mode

{Integer} Bitfields specifying the modification mode.  Defaults to OpenLayers.Control.ModifyFeature.RESHAPE.  To set the mode to a combination of options, use the | operator.  For example, to allow the control to both resize and rotate features, use the following syntax

control.mode = OpenLayers.Control.ModifyFeature.RESIZE |
               OpenLayers.Control.ModifyFeature.ROTATE;

createVertices

{Boolean} Create new vertices by dragging the virtual vertices in the middle of each edge.  Default is true.

modified

{Boolean} The currently selected feature has been modified.

radiusHandle

{OpenLayers.Feature.Vector} A handle for rotating/resizing a feature.

dragHandle

{OpenLayers.Feature.Vector} A handle for dragging a feature.

onModificationStart

{Function} Deprecated.  Register for “beforefeaturemodified” instead.  The “beforefeaturemodified” event is triggered on the layer before any modification begins.

Optional function to be called when a feature is selected to be modified.  The function should expect to be called with a feature.  This could be used for example to allow to lock the feature on server-side.

onModification

{Function} Deprecated.  Register for “featuremodified” instead.  The “featuremodified” event is triggered on the layer with each feature modification.

Optional function to be called when a feature has been modified.  The function should expect to be called with a feature.

onModificationEnd

{Function} Deprecated.  Register for “afterfeaturemodified” instead.  The “afterfeaturemodified” event is triggered on the layer after a feature has been modified.

Optional function to be called when a feature is finished being modified.  The function should expect to be called with a feature.

Constructor

OpenLayers.Control.ModifyFeature

Create a new modify feature control.

Parameters

layer{OpenLayers.Layer.Vector} Layer that contains features that will be modified.
options{Object} Optional object whose properties will be set on the control.

Functions

createVirtualVertex

createVirtualVertex: function(point1,
point2)

Create a virtual vertex in the middle of the segment.

Parameters

point1{OpenLayers.Geometry.Point} First point of the segment.
point2{OpenLayers.Geometry.Point} Second point of the segment.

Returns

{OpenLayers.Feature.Vector} The virtual vertex created.

destroy

destroy: function()

Take care of things that are not handled in superclass.

activate

activate: function()

Activate the control.

Returns

{Boolean} Successfully activated the control.

deactivate

deactivate: function()

Deactivate the control.

Returns

{Boolean} Successfully deactivated the control.

beforeSelectFeature

beforeSelectFeature: function(feature)

Called before a feature is selected.

Parameters

feature{OpenLayers.Feature.Vector} The feature about to be selected.

selectFeature

selectFeature: function(feature)

Select a feature for modification in standalone mode.  In non-standalone mode, this method is called when a feature is selected by clicking.  Register a listener to the beforefeaturemodified event and return false to prevent feature modification.

Parameters

feature{OpenLayers.Feature.Vector} the selected feature.

unselectFeature

unselectFeature: function(feature)

Called when the select feature control unselects a feature.

Parameters

feature{OpenLayers.Feature.Vector} The unselected feature.

dragStart

dragStart: function(feature)

Called by the drag handler before a feature is dragged.  This method is used to differentiate between points and vertices of higher order geometries.

Parameters

feature{OpenLayers.Feature.Vector} The point or vertex about to be dragged.

dragVertex

dragVertex: function(vertex,
pixel)

Called by the drag handler with each drag move of a vertex.

Parameters

vertex{OpenLayers.Feature.Vector} The vertex being dragged.
pixel{OpenLayers.Pixel} Pixel location of the mouse event.

dragComplete

dragComplete: function(vertex)

Called by the drag handler when the feature dragging is complete.

Parameters

vertex{OpenLayers.Feature.Vector} The vertex being dragged.

setFeatureState

setFeatureState: function()

Called when the feature is modified.  If the current state is not INSERT or DELETE, the state is set to UPDATE.

resetVertices

resetVertices: function()

handleKeypress

handleKeypress: function(evt)

Called by the feature handler on keypress.  This is used to delete vertices.  If the <deleteCode> property is set, vertices will be deleted when a feature is selected for modification and the mouse is over a vertex.

Parameters

evt{Event} Keypress event.

collectVertices

collectVertices: function()

Collect the vertices from the modifiable feature’s geometry and push them on to the control’s vertices array.

collectDragHandle

collectDragHandle: function()

Collect the drag handle for the selected geometry.

collectRadiusHandle

collectRadiusHandle: function()

Collect the radius handle for the selected geometry.

setMap

setMap: function(map)

Set the map property for the control and all handlers.

Parameters

map{OpenLayers.Map} The control’s map.

handleMapEvents

handleMapEvents: function(evt)

Parameters

evt{Object}

moveLayerToTop

moveLayerToTop: function()

Moves the layer for this handler to the top, so mouse events can reach it.

moveLayerBack

moveLayerBack: function()

Moves the layer back to the position determined by the map’s layers array.

Constants

RESHAPE

{Integer} Constant used to make the control work in reshape mode

RESIZE

{Integer} Constant used to make the control work in resize mode

ROTATE

{Integer} Constant used to make the control work in rotate mode

DRAG

{Integer} Constant used to make the control work in drag mode

Instances of OpenLayers.Layer.Vector are used to render vector data from a variety of sources.
Vector features use the OpenLayers.Geometry classes as geometry description.
createVirtualVertex: function(point1,
point2)
Create a virtual vertex in the middle of the segment.
destroy: function()
Take care of things that are not handled in superclass.
activate: function()
Activate the control.
deactivate: function()
Deactivate the control.
beforeSelectFeature: function(feature)
Called before a feature is selected.
selectFeature: function(feature)
Select a feature for modification in standalone mode.
unselectFeature: function(feature)
Called when the select feature control unselects a feature.
dragStart: function(feature)
Called by the drag handler before a feature is dragged.
dragVertex: function(vertex,
pixel)
Called by the drag handler with each drag move of a vertex.
dragComplete: function(vertex)
Called by the drag handler when the feature dragging is complete.
setFeatureState: function()
Called when the feature is modified.
resetVertices: function()
handleKeypress: function(evt)
Called by the feature handler on keypress.
collectVertices: function()
Collect the vertices from the modifiable feature’s geometry and push them on to the control’s vertices array.
collectDragHandle: function()
Collect the drag handle for the selected geometry.
collectRadiusHandle: function()
Collect the radius handle for the selected geometry.
setMap: function(map)
Set the map property for the control and all handlers.
handleMapEvents: function(evt)
moveLayerToTop: function()
Moves the layer for this handler to the top, so mouse events can reach it.
moveLayerBack: function()
Moves the layer back to the position determined by the map’s layers array.
Create a new modify feature control.
Controls affect the display or behavior of the map.
{Object} A symbolizer to be used for virtual vertices.
Point geometry class.
This class represents a screen coordinate, in x and y coordinates
Instances of OpenLayers.Map are interactive maps embedded in a web page.
Close