import MultipointDrawAction from "@arcgis/core/views/draw/MultipointDrawAction.js";
Inheritance
MultipointDrawActionDrawActionAccessor
Since
ArcGIS Maps SDK for JavaScript 4.6

This class uses the view events to generate a set of coordinates to create a new Multipoint geometry using Draw. When the draw.create("multipoint") method is called, a reference to MultipointDrawAction is returned. You can listen to events on the MultipointDrawAction instance, which allows users to create a multipoint that meets criteria specified by the application.

Known Limitations

Currently the MultipointDrawAction is only supported in a MapView.

See also
Example
function enableCreateMultipoint(draw, view) {
let action = draw.create("multipoint");
// Give a visual feedback to users as they move the pointer over the view
action.on("cursor-update", function (evt) {
createMultipointGraphic(evt.vertices);
});
// Fires when the user clicks, or presses the "F" key on the view
// Can also fire when the "R" key is pressed to redo.
action.on("vertex-add", function (evt) {
createMultipointGraphic(evt.vertices);
});
// Fires when the "Z" key is pressed to undo the last added point
action.on("vertex-remove", function (evt) {
createMultipointGraphic(evt.vertices);
});
// Create a point when user clicks on the view or presses the "Enter" key.
action.on("draw-complete", function (evt) {
createMultipointGraphic(evt.vertices);
});
}
function createMultipointGraphic(vertices) {
view.graphics.removeAll();
let multipoint = new Multipoint({
points: vertices,
spatialReference: view.spatialReference
});
graphic = new Graphic({
geometry: multipoint,
symbol: {
type: "simple-marker",
style: "square",
color: "red",
size: "16px",
outline: {
color: [255, 255, 0],
width: 3
}
}
});
view.graphics.add(graphic);
}

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
readonly inherited
inherited
readonly inherited
number[][]
inherited

declaredClass

readonlyinherited Property
Type
string
Inherited from: Accessor
Since
ArcGIS Maps SDK for JavaScript 4.7

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

hasZ

inherited Property
Type
boolean
Inherited from: DrawAction

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

Default value
true

vertices

readonlyinherited Property
Type
number[][]
Inherited from: DrawAction

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

view

inherited Property
Type
MapViewOrSceneView
Inherited from: DrawAction

A reference to the MapView.

Methods

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

canRedo

inherited Method
Signature
canRedo (): boolean
Inherited from: DrawAction

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

Returns
boolean

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

canUndo

inherited Method
Signature
canUndo (): boolean
Inherited from: DrawAction

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

Returns
boolean

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

complete

Method
Signature
complete (): void

Completes drawing the Multipoint geometry and fires the @draw-complete event. Call this method if the drawing logic needs to be completed other than by double-clicking or pressing the "Enter" key.

Returns
void

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

inherited Method
Signature
getCoordsAndPointFromScreenPoint (screenPoint: ScreenPoint): FromScreenPointResult | null | undefined
Inherited from: DrawAction

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

inherited Method
Signature
getCoordsFromScreenPoint (screenPoint: ScreenPoint | null | undefined): number[] | null | undefined
Inherited from: DrawAction

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

inherited Method
Signature
redo (): void
Inherited from: DrawAction

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

inherited Method
Signature
screenToMap (screenPoint: ScreenPoint): Point | null | undefined
Inherited from: DrawAction

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

inherited Method
Signature
undo (): void
Inherited from: DrawAction

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
});

Events

cursor-update

Event
cursor-update: CustomEvent<CursorUpdateEvent>

Fires after the pointer moves on the view.

bubbles composed cancelable
Example
// fires when the pointer moves on the view.
action.on("cursor-update", function (evt) {
view.graphics.removeAll();
let multipoint = new Multipoint({
points: evt.vertices,
spatialReference: view.spatialReference
});
let graphic = createGraphic(multipoint);
view.graphics.add(graphic);
});

draw-complete

Event
draw-complete: CustomEvent<DrawCompleteEvent>

Fires after the user has completed drawing a Multipoint.

bubbles composed cancelable
Example
// fires when completed drawing the multipoint.
action.on("draw-complete", function (evt) {
view.graphics.removeAll();
let multipoint = new Multipoint({
points: evt.vertices,
spatialReference: view.spatialReference
});
let graphic = createGraphic(multipoint);
view.graphics.add(graphic);
});

redo

Event
Since
ArcGIS Maps SDK for JavaScript 4.7

Fires in response to redo action or when redo() is called.

bubbles composed cancelable
Example
// Update the graphic on the view as the last action was redone
action.on("redo", function (evt) {
view.graphics.removeAll();
let multipoint = new Multipoint({
points: evt.vertices,
spatialReference: view.spatialReference
});
let graphic = createGraphic(multipoint);
view.graphics.add(graphic);
});

undo

Event
Since
ArcGIS Maps SDK for JavaScript 4.7

Fires in response to undo action or when undo() is called.

bubbles composed cancelable
Example
// Update the graphic on the view as the last action was undone
action.on("undo", function (evt) {
view.graphics.removeAll();
let multipoint = new Multipoint({
points: evt.vertices,
spatialReference: view.spatialReference
});
let graphic = createGraphic(multipoint);
view.graphics.add(graphic);
});

vertex-add

Event

Fires when a point is added to the multipoint.

bubbles composed cancelable
Example
// fires when a point is added to the multipoint.
action.on("vertex-add", function (evt) {
view.graphics.removeAll();
let multipoint = new Multipoint({
points: evt.vertices,
spatialReference: view.spatialReference
});
let graphic = createGraphic(multipoint);
view.graphics.add(graphic);
});

vertex-remove

Event
vertex-remove: CustomEvent<VertexRemoveEvent>

Fires when a point is removed from the multipoint.

bubbles composed cancelable
Example
// fires when a point is removed from multipoint.
action.on("vertex-remove", function (evt) {
view.graphics.removeAll();
let multipoint = new Multipoint({
points: evt.vertices,
spatialReference: view.spatialReference
});
let graphic = createGraphic(multipoint);
view.graphics.add(graphic);
});

Type definitions