SnappingOptions

AMD: require(["esri/views/interactive/snapping/SnappingOptions"], (SnappingOptions) => { /* code goes here */ });
ESM: import SnappingOptions from "@arcgis/core/views/interactive/snapping/SnappingOptions";
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 (Geometry guides)

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, WFSLayer, and CSVLayer.
  • 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
Stringmore details

The name of the class.

more detailsAccessor
Numbermore details

Snapping distance for snapping in pixels.

more detailsSnappingOptions
Booleanmore details

Global configuration to turn snapping on or off.

more detailsSnappingOptions
Booleanmore details

Global configuration option to turn feature snapping on or off.

more detailsSnappingOptions
Collection<FeatureSnappingLayerSource>more details

List of sources for feature snapping.

more detailsSnappingOptions
Booleanmore details

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

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

Your browser is no longer supported. Please upgrade your browser for the best experience. See our browser deprecation post for more details.