Skip to content
import DrawAction from "@arcgis/core/views/draw/DrawAction.js";
Inheritance:
DrawActionAccessor
Subclasses:
MultipointDrawAction, PointDrawAction, PolygonDrawAction, PolylineDrawAction, SegmentDrawAction
Since
ArcGIS Maps SDK for JavaScript 4.7

DrawAction is the base class for all draw actions. DrawActions use the view events to generate a set of coordinates to create new geometries. Each serves a different purpose, allowing you to create a different type geometry such as Point, Multipoint, Polyline, and Polygon.

When the draw.create("type of geometry") method is called, an instance of the relevant draw action is returned. You can then listen to its events to create a new geometry that meets criteria specified by the application.

See also

Constructors

Constructor

Constructor
Parameters
ParameterTypeDescriptionRequired
properties
See the properties table for a list of all the properties that may be passed into the constructor.

Properties

Any properties can be set, retrieved or listened to. See the Watch for changes topic.
PropertyTypeClass
declaredClass
readonly inherited
vertices
readonly
number[][]

declaredClass

readonlyinherited Property
Type
string
Inherited from: Accessor

The name of the class. The declared class name is formatted as esri.folder.className.

hasZ

Property
Type
boolean

Controls whether the created geometry will have z coordinates or not.

Default value
true

vertices

readonly Property
Type
number[][]

Two-dimensional array of numbers representing the coordinates of each vertex comprising the geometry being drawn.

view

Property
Type
MapViewOrSceneView

A reference to the MapView.

Methods

MethodSignatureClass
canRedo(): boolean
canUndo(): boolean
emit
inherited
emit<Type extends EventNames<this>>(type: Type, event?: this["@eventTypes"][Type]): boolean
getCoordsAndPointFromScreenPoint(screenPoint: ScreenPoint): FromScreenPointResult | null | undefined
getCoordsFromScreenPoint(screenPoint: ScreenPoint | null | undefined): number[] | null | undefined
hasEventListener
inherited
hasEventListener<Type extends EventNames<this>>(type: Type): boolean
isFulfilled
inherited
isFulfilled(): boolean
isRejected
inherited
isRejected(): boolean
isResolved
inherited
isResolved(): boolean
on
inherited
on<Type extends EventNames<this>>(type: Type, listener: EventedCallback<this["@eventTypes"][Type]>): ResourceHandle
redo(): void
screenToMap(screenPoint: ScreenPoint): Point | null | undefined
undo(): void
when
inherited
when<TResult1 = this, TResult2 = never>(onFulfilled?: OnFulfilledCallback<this, TResult1> | null | undefined, onRejected?: OnRejectedCallback<TResult2> | null | undefined): Promise<TResult1 | TResult2>

canRedo

Method
Signature
canRedo (): boolean

Indicates if the redo() method can be called on the action instance.

Returns
boolean

Returns true if the redo() method can be called.

canUndo

Method
Signature
canUndo (): boolean

Indicates if the undo() method can be called on the action instance.

Returns
boolean

Returns true if the undo() method can be called.

emit

inherited Method
Signature
emit <Type extends EventNames<this>>(type: Type, event?: this["@eventTypes"][Type]): boolean
Type parameters
<Type extends EventNames<this>>
Inherited from: EventedMixin

Emits an event on the instance. This method should only be used when creating subclasses of this class.

Parameters
ParameterTypeDescriptionRequired
type
Type

The name of the event.

event
this["@eventTypes"][Type]

The event payload.

Returns
boolean

true if a listener was notified

getCoordsAndPointFromScreenPoint

Method
Signature
getCoordsAndPointFromScreenPoint (screenPoint: ScreenPoint): FromScreenPointResult | null | undefined

Maps the given screen point to a map point.

Parameters
ParameterTypeDescriptionRequired
screenPoint

The location on the screen.

Returns
FromScreenPointResult | null | undefined

The result object containing, or null if the screen point could not be mapped.

getCoordsFromScreenPoint

Method
Signature
getCoordsFromScreenPoint (screenPoint: ScreenPoint | null | undefined): number[] | null | undefined

Maps the given screen point to a map point.

Parameters
ParameterTypeDescriptionRequired
screenPoint

The location on the screen.

Returns
number[] | null | undefined

Array of x,y and z component (if hasZ is enabled) of the point associated with the given screen point or null if screen point could not be mapped.

hasEventListener

inherited Method
Signature
hasEventListener <Type extends EventNames<this>>(type: Type): boolean
Type parameters
<Type extends EventNames<this>>
Inherited from: EventedMixin

Indicates whether there is an event listener on the instance that matches the provided event name.

Parameters
ParameterTypeDescriptionRequired
type
Type

The name of the event.

Returns
boolean

Returns true if the class supports the input event.

isFulfilled

inherited Method
Signature
isFulfilled (): boolean
Inherited from: EsriPromiseMixin

isFulfilled() may be used to verify if creating an instance of the class is fulfilled (either resolved or rejected). If it is fulfilled, true will be returned.

Returns
boolean

Indicates whether creating an instance of the class has been fulfilled (either resolved or rejected).

isRejected

inherited Method
Signature
isRejected (): boolean
Inherited from: EsriPromiseMixin

isRejected() may be used to verify if creating an instance of the class is rejected. If it is rejected, true will be returned.

Returns
boolean

Indicates whether creating an instance of the class has been rejected.

isResolved

inherited Method
Signature
isResolved (): boolean
Inherited from: EsriPromiseMixin

isResolved() may be used to verify if creating an instance of the class is resolved. If it is resolved, true will be returned.

Returns
boolean

Indicates whether creating an instance of the class has been resolved.

on

inherited Method
Signature
on <Type extends EventNames<this>>(type: Type, listener: EventedCallback<this["@eventTypes"][Type]>): ResourceHandle
Type parameters
<Type extends EventNames<this>>
Inherited from: EventedMixin

Registers an event handler on the instance. Call this method to hook an event with a listener.

Parameters
ParameterTypeDescriptionRequired
type
Type

An event or an array of events to listen for.

listener
EventedCallback<this["@eventTypes"][Type]>

The function to call when the event fires.

Returns
ResourceHandle

Returns an event handler with a remove() method that should be called to stop listening for the event(s).

PropertyTypeDescription
removeFunctionWhen called, removes the listener from the event.
Example
view.on("click", function(event){
// event is the event handle returned after the event fires.
console.log(event.mapPoint);
});

redo

Method
Signature
redo (): void

Incrementally redo actions recorded in the stack. Call canRedo() prior to calling this method to check if this method can be called on the action instance. Calling this method will fire the vertex-add or vertex-remove events depending on the last action.

Returns
void
Example
if (action.canRedo()) {
action.redo();
}

screenToMap

Method
Signature
screenToMap (screenPoint: ScreenPoint): Point | null | undefined

Maps the given screen point to a map point.

Parameters
ParameterTypeDescriptionRequired
screenPoint

The location on the screen.

Returns
Point | null | undefined

MapPoint associated with the given screen point or null if screen point could not be mapped.

undo

Method
Signature
undo (): void

Incrementally undo actions recorded in the stack. Call canUndo() prior to calling this method to check if this method can be called on the action instance. Calling this method will fire the vertex-add or vertex-remove events depending on the last action.

Returns
void
Example
if (action.canUndo()) {
action.undo();
}

when

inherited Method
Signature
when <TResult1 = this, TResult2 = never>(onFulfilled?: OnFulfilledCallback<this, TResult1> | null | undefined, onRejected?: OnRejectedCallback<TResult2> | null | undefined): Promise<TResult1 | TResult2>
Type parameters
<TResult1 = this, TResult2 = never>
Inherited from: EsriPromiseMixin

when() may be leveraged once an instance of the class is created. This method takes two input parameters: an onFulfilled function and an onRejected function. The onFulfilled executes when the instance of the class loads. The onRejected executes if the instance of the class fails to load.

Parameters
ParameterTypeDescriptionRequired
onFulfilled

The function to call when the promise resolves.

onRejected

The function to execute when the promise fails.

Returns
Promise<TResult1 | TResult2>

Returns a new promise for the result of onFulfilled that may be used to chain additional functions.

Example
// Although this example uses MapView, any class instance that is a promise may use when() in the same way
let view = new MapView();
view.when(function(){
// This function will execute once the promise is resolved
}, function(error){
// This function will execute if the promise is rejected due to an error
});

Type definitions

FromScreenPointResult

Type definition

The result object of the getCoordsAndPointFromScreenPoint() method. See the table below for more details on each property.

vertex

Property
Type
number[]

Array of x, y, and z component (if hasZ is enabled).

mapPoint

Property
Type
Point

The map point of the point associated with the given screen point.