SnappingOptions

require(["esri/views/interactive/snapping/SnappingOptions"], function(SnappingOptions) { /* code goes here */ });
Class: esri/views/interactive/snapping/SnappingOptions
Inheritance: SnappingOptions Accessor
Since: ArcGIS API for JavaScript 4.19

The SnappingOptions allows users to configure snapping for their editing or drawing experience in both the Sketch and Editor widgets.

Snapping options provide the ability to specify whether an application will utilize self snapping, feature snapping, or both. Both are described below.

It is also possible to toggle snapping by pressing and holding down the CTRL key. This toggles the snapping on/off.

Self snapping

Self snapping is set via the selfEnabled property. This means that while a user is actively creating or updating a feature or graphic, they will see visualizations to help identify perpendicular and parallel lines, in addition to visualizations which aid in snapping to an extension of an existing feature. The following briefly demonstrates what self snapping looks like in a 2D application. Although this is shown for 2D, the same premise applies for 3D as well.

self-snapping

Feature snapping

Feature snapping is set via the featureEnabled property. It provides the ability to snap vertices of a graphic or feature that is currently being drawn or reshaped to that of an existing feature's vertex, edge, or end point. These existing features belong to layers within the Map and must be specified in the featureSources property. The following two images demonstrate feature snapping in a 2D application. Similar to self snapping, the same premise applies for 3D as well.

feature-snapping-create

The above shows feature snapping to an existing feature's vertex endpoint and edge while creating a new feature. The bottom demonstrates taking an existing feature and reshaping its geometry to snap to another feature's vertex points.

feature-snapping-update

Things to consider:

  • Layer types currently supported for snapping are: FeatureLayer, GraphicsLayer, GeoJSONLayer, and CSVLayer.
  • Snapping is not yet implemented when updating existing 2D point geometries. For example, selecting an existing point and modifying it to snap to another will not currently work.
  • Snapping is not yet implemented when using the Sketch widget's circle tool. It will be addressed in a future release.
  • Enabling snapping via the CTRL key is not currently supported using the Sketch widget's rectangle and circle tools. However, snapping can still be activated by setting the snappingOptions.enabled property to true in the Sketch widget or its view model. Note that this enables snapping for all tools. This behavior is subject to change in a future release.
  • Currently, snapping in 3D should be viewed using a 2D perspective since snapping to the z-axis is not yet implemented.
Name Details 3D Example 2D Example
Rectangle Snap lines that are perpendicular to each other Rectangle Rectangle-2d
Parallel Snap to all parallel lines Parallel Parallel-2d
Extension Snap to an extension of the current shape Extension Extension-2
Vertex (as seen when updating geometries) Snap vertices to an existing vertex Vertex Vertex-2
See also:
Example:
// Create a new instance of Sketch, and set
// a layer for one of the featureSources property.
// This enables feature snapping on that layer.
const sketch = new Sketch({
  layer: graphicsLayer,
  view: view,
  snappingOptions: { // autocasts to SnappingOptions()
    enabled: true,
    featureSources: [{ layer: graphicsLayer }] // autocasts to FeatureSnappingLayerSource()
  }
});

Constructors

new SnappingOptions(properties)
Parameter:
properties Object
optional

See the properties for a list of all the properties that may be passed into the constructor.

Property Overview

Any properties can be set, retrieved or listened to. See the Working with Properties topic.
Show inherited properties Hide inherited properties
Name Type Summary Class
String

The name of the class.

more details
more detailsAccessor
Number

Snapping distance for snapping in pixels.

more details
more detailsSnappingOptions
Boolean

Global configuration to turn snapping on or off.

more details
more detailsSnappingOptions
Boolean

Global configuration option to turn feature snapping on or off.

more details
more detailsSnappingOptions
Collection<FeatureSnappingLayerSource>

List of sources for feature snapping.

more details
more detailsSnappingOptions
Boolean

Global configuration option to turn self snapping (within one feature while either drawing or reshaping) on or off.

more details
more detailsSnappingOptions

Property Details

declaredClass Stringreadonly inherited

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

distance Number

Snapping distance for snapping in pixels.

Default Value:5
enabled Boolean

Global configuration to turn snapping on or off. Note that snapping is turned off by default.

Default Value:false
featureEnabled Boolean

Global configuration option to turn feature snapping on or off.

Default Value:true

List of sources for feature snapping. Please refer to FeatureSnappingLayerSource for additional information on what layer sources are supported.

selfEnabled Boolean

Global configuration option to turn self snapping (within one feature while either drawing or reshaping) on or off.

Default Value:true