All Known Implementing Classes:
FeatureLayer, SubtypeFeatureLayer

public interface SnapSource
Indicates a source of geometries that a GeometryEditor could snap interactive edits to.

SnapSource is implemented by objects that can provide a source of geometries to snap interactive edits to when using the GeometryEditor. For example, a feature layer can provide a set of geometries that you may want your users to snap to.

Following a call to SnapSettings.syncSourceSettings(), the SnapSettings.getSourceSettings() collection is populated with SnapSourceSettings objects that are valid for snapping. Each represents a SnapSource that is in the currently connected map, is suitable for snapping, and is loaded. For each SnapSource you want to allow snapping to, set the corresponding SnapSourceSettings.enabledProperty() to true.

Snapping is used to maintain data integrity between different sources of data when editing, so it is important that each SnapSource provides full resolution geometries to be valid for snapping. This means that some of the default optimizations used to improve the efficiency of data transfer and display of polygon and polyline layers based on feature services are not appropriate for use with snapping. To snap to polygon and polyline layers based on a ServiceFeatureTable, the recommended approach is to ensure the following properties are configured before the layer is loaded:

  1. Set the feature tiling mode to FeatureTilingMode.ENABLED_WITH_FULL_RESOLUTION_WHEN_SUPPORTED, and
  2. Use the default feature request mode ServiceFeatureTable.FeatureRequestMode.ON_INTERACTION_CACHE

You can configure these properties on a per-layer basis using FeatureLayer.getTilingMode() and ServiceFeatureTable.getFeatureRequestMode(), or for a whole ArcGISMap using LoadSettings.getFeatureRequestMode() and LoadSettings.getFeatureTilingMode().

Layers providing a valid source of geometries for snapping are represented by a corresponding SnapSourceSettings object in the SnapSettings.getSourceSettings() collection after SnapSettings.syncSourceSettings() returns.

Alternative approaches to create a valid snappable layer for polygon or polyline hosted feature layers are to:

If your app sets ArcGISRuntimeEnvironment.setServiceCurveGeometryMode(ServiceCurveGeometryMode) to ServiceCurveGeometryMode.TRUE_CURVE_CLIENT to fetch true curves, you should consider using one of these alternatives. Curve geometries are not currently supported in the PBF format used by feature tile requests, and densified curves are returned from the service if feature tiling is used. Using these alternatives will ensure that true curves are preserved in a SnapSource based on a feature service.

Local data sources, such as geodatabases, always provide full resolution geometries. Point and multipoint feature layers are also always full resolution.

Since:
200.4.0
See Also: