OnSketchCompleteAsync Method (MapTool)
In This Topic
Occurs when a sketch is finished.
Syntax
Parameters
- geometry
- The geometry of the sketch.
Return Value
True if the sketch complete event was handled.
Example
Annotation Construction Tool
//In your config.daml...set the categoryRefID
//<tool id="..." categoryRefID="esri_editing_construction_annotation" caption="Create Anno" ...>
//Sketch type Point or Line or BezierLine in the constructor...
public class ProSnippetAnnotationConstructionTool : MapTool
{
public ProSnippetAnnotationConstructionTool()
{
IsSketchTool = true;
UseSnapping = true;
SketchType = SketchGeometryType.Point;
}
/// <summary>
/// Handles the completion of a sketch operation and creates an annotation feature based on the provided geometry.
/// </summary>
protected async override Task<bool> OnSketchCompleteAsync(Geometry geometry)
{
if (CurrentTemplate == null || geometry == null)
return false;
// Create an edit operation
var createOperation = new EditOperation
{
Name = string.Format("Create {0}", CurrentTemplate.Layer.Name),
SelectNewFeatures = true
};
var insp = CurrentTemplate.Inspector;
var result = await QueuedTask.Run(() =>
{
// get the annotation properties class
AnnotationProperties annoProperties = insp.GetAnnotationProperties();
// set custom annotation properties
annoProperties.TextString = "my custom text";
annoProperties.Color = ColorFactory.Instance.RedRGB;
annoProperties.FontSize = 24;
annoProperties.FontName = "Arial";
annoProperties.HorizontalAlignment = HorizontalAlignment.Right;
annoProperties.Shape = geometry;
// assign annotation properties back to the inspector
insp.SetAnnotationProperties(annoProperties);
// Queue feature creation
createOperation.Create(CurrentTemplate.Layer, insp);
if (!createOperation.IsEmpty)
{
// Execute the operation
return createOperation.Execute(); //Execute and ExecuteAsync will return true if the operation was successful and false if not
}
else
return false;
});
return result;
}
}
Spatial selection of elements in all Graphics Layers
//Map Tool is used to perform Spatial selection.
//Graphic selection uses the selection geometry
//to intersect the geometries of those elements (graphic or group)
//that will be selected and then highlights them.
{
var selPoly = geometry as Polygon;
// Note: must be called on the QueuedTask
{
//note: the selected elements may belong to more than one layer...
var elems = MapView.Active.SelectElements(selPoly, SelectionCombinationMethod.New);
}
}
Requirements
Target Platforms: Windows 11 Home, Pro, Enterprise (64 bit)
ArcGIS Pro version: 3.0 or higher.
See Also