Parameters
- layer
- The layer to set the snap modes on.
- setAll
- Set all the snap modes on(true) or off(false).
var featureLayerList = MapView.Active.Map.GetLayersAsFlattenedList().OfType<FeatureLayer>(); // configure layer snap modes - must run on the MCT await QueuedTask.Run(() => { // configure by layer foreach (var layer in featureLayerList) { // find the state of the snapModes for the layer var lsm = Snapping.GetLayerSnapModes(layer); bool vertexOn = lsm.Vertex; // or use vertexOn = lsm.GetSnapMode(SnapMode.Vertex); bool edgeOn = lsm.Edge; // or use edgeOn = lsm.GetSnapMode(SnapMode.Edge); bool endOn = lsm.End; // or use endOn = lsm.GetSnapMode(SnapMode.End); // update a few snapModes // turn Vertex off lsm.SetSnapMode(SnapMode.Vertex, false); // intersections on lsm.SetSnapMode(SnapMode.Intersection, true); // and set back to the layer Snapping.SetLayerSnapModes(layer, lsm); // assign a single snap mode at once Snapping.SetLayerSnapModes(layer, SnapMode.Vertex, false); // turn ALL snapModes on Snapping.SetLayerSnapModes(layer, true); // turn ALL snapModes off Snapping.SetLayerSnapModes(layer, false); } // configure for a set of layers // set Vertex, edge, end on for a set of layers, other snapModes false var vee = new LayerSnapModes(false) { Vertex = true, Edge = true, End = true }; Snapping.SetLayerSnapModes(featureLayerList, vee); // ensure intersection is on for a set of layers without changing any other snapModes // get the layer snapModes for the set of layers var dictLSM = Snapping.GetLayerSnapModes(featureLayerList); foreach (var layer in dictLSM.Keys) { var lsm = dictLSM[layer]; lsm.Intersection = true; } Snapping.SetLayerSnapModes(dictLSM); // set all snapModes off for a list of layers Snapping.SetLayerSnapModes(featureLayerList, false); });
Target Platforms: Windows 11 Home, Pro, Enterprise (64 bit)