OverlayControlID Property
Gets or sets the DAML ID of the embeddable control to show on the map view when the tool is active.
protected string OverlayControlID {get; set;}
Protected Property OverlayControlID As String
How to position an embeddable control inside a MapView
public ProSnippetMapTool()
{
//Set the MapTool base class' OverlayControlID to the DAML id of your embeddable control in the constructor
this.OverlayControlID = "ProAppModule1_EmbeddableControl1";
}
protected override void OnToolMouseDown(MapViewMouseButtonEventArgs e)
{
if (e.ChangedButton == System.Windows.Input.MouseButton.Left)
e.Handled = true;
}
protected override Task HandleMouseDownAsync(MapViewMouseButtonEventArgs e)
{
return QueuedTask.Run(() =>
{
//assign the screen coordinate clicked point to the MapTool base class' OverlayControlLocation property.
this.OverlayControlPositionRatio = e.ClientPoint;
});
}
Tool with an Overlay Embeddable Control
// Using the Visual Studio SDK templates, add a MapTool and an EmbeddableControl
// The EmbeddableControl is registered in the "esri_embeddableControls" category in the config.daml file
//
// <categories>
// <updateCategory refID = "esri_embeddableControls" >
// <insertComponent id="mapTool_EmbeddableControl" className="EmbeddableControl1ViewModel">
// <content className = "EmbeddableControl1View" />
// </insertComponent>
// <updateCategory>
// </categories>
internal class MapTool_WithOverlayControl : MapTool
{
public MapTool_WithOverlayControl()
{
// substitute this string with the daml ID of the embeddable control you added
OverlayControlID = "mapTool_EmbeddableControl";
}
protected override void OnToolMouseDown(MapViewMouseButtonEventArgs e)
{
e.Handled = true;
}
protected override Task HandleMouseDownAsync(MapViewMouseButtonEventArgs e)
{
//Get the instance of the ViewModel
var vm = OverlayEmbeddableControl;
if (vm == null)
return Task.FromResult(0);
// cast vm to your viewModel in order to access your properties
//Get the map coordinates from the click point and set the property on the ViewMode.
return QueuedTask.Run(() =>
{
var mapPoint = MapView.Active.ClientToMap(e.ClientPoint);
string clickText = string.Format("X: {0}, Y: {1}, Z: {2}", mapPoint.X, mapPoint.Y, mapPoint.Z);
});
}
}
Target Platforms: Windows 11, Windows 10
ArcGIS Pro version: 3 or higher.