ArcGIS Explorer Component Help |
MapDisplay..::.BeginTrackEnvelope Method (TrackDelegate, Color, Double) |
MapDisplay Class Example See Also |
An asynchronous method call which executes the specified delegate and begins an operation to create a new Envelope at the location of two
mouse clicks on the display, using the specified line color and width while tracking.
Namespace:
ESRI.ArcGISExplorer.MappingAssembly: ESRI.ArcGISExplorer (in ESRI.ArcGISExplorer.dll) Version: 2.0.0.1500 (2.0.0.1500)
Syntax
C# |
---|
public void BeginTrackEnvelope( TrackDelegate trackDelegate, Color color, double width ) |
Visual Basic (Declaration) |
---|
Public Sub BeginTrackEnvelope ( _ trackDelegate As TrackDelegate, _ color As Color, _ width As Double _ ) |
Parameters
- trackDelegate
- Type: ESRI.ArcGISExplorer.Mapping..::.TrackDelegate
A tracking delegate that contains a method to be called when the user interacts with the display.
- color
- Type: System.Drawing..::.Color
The color of the partially completed envelope during the tracking operation.
- width
- Type: System..::.Double
The width in pixels of the partially completed envelope shown during the tracking operation. Default is 1, maximum is 10.
Remarks
The BeginTrackEnvelope method calls a delegate which allows returning a user-clicked Envelope on the map. The TrackDelegate allows mouse moves and tracking cancellation to be identified. The tracked Envelope is available from the Geometry passed to the delegate.
This asynchronous method will return immediately, allowing the user interface (UI) thread to continue working. After this method is called, the trackDelegate method will be called when the user interacts with the display.
The Polygon representation of the Envelope can be returned using the Envelope.GetPolygon method.
Version Information: This method is supported from version 2.0.0.1500.
Examples
Although the following code example relates to the BeginTrackPolygon method, it serves to illustrate how to also use
the BeginTrackEnvelope method.
CopyC#
using System; using System.IO; using System.Drawing; using ESRI.ArcGISExplorer; using ESRI.ArcGISExplorer.Application; using ESRI.ArcGISExplorer.Mapping; using ESRI.ArcGISExplorer.Geometry; using ESRI.ArcGISExplorer.Data; using ESRI.ArcGISExplorer.Threading; namespace TrackPolygonUsingDelegate { public class AsyncTrackPoly : ESRI.ArcGISExplorer.Application.Button { Table _districtsTable; public override void OnClick() { //Open the district shapefile _districtsTable = Table.OpenShapefile(@"C:\Data\district.shp"); //Get the MapDisplay ESRI.ArcGISExplorer.Mapping.MapDisplay disp = ESRI.ArcGISExplorer.Application.Application.ActiveMapDisplay; //Start tracking asynchronously disp.BeginTrackPolygon(TrackDelegate, Color.Red, 6); //The following code WILL be executed immediately while tracking //e.g list all files in a folder on disk DirectoryInfo di = new DirectoryInfo(@"C:\Data"); FileInfo[] files = di.GetFiles("*.*"); foreach (FileInfo fi in files) { System.Diagnostics.Debug.Print(fi.Name); } } /// <summary> /// The delegate used by the BeginTrackPolygon method /// </summary> public void TrackDelegate(TrackingInfo info) { switch (info.Status) { case TrackStatus.Cancelled: System.Diagnostics.Debug.Print("cancelled"); break; case TrackStatus.Completed: break; case TrackStatus.MouseMoved: break; case TrackStatus.PointAdded: //Perform a spatial query ReportDistrictsIntersectingTheTrackPolygon(info.Geometry); break; case TrackStatus.PointRemoved: //Perform a spatial query ReportDistrictsIntersectingTheTrackPolygon(info.Geometry); break; default: break; } } /// <summary> /// Reports the districts which intersect the tracked polygon. /// </summary> private void ReportDistrictsIntersectingTheTrackPolygon(Geometry geom) { Polygon poly = geom as Polygon; if ((poly != null) && (poly.IsEmpty == false)) { RowCollection resultRows = _districtsTable.Search(new Filter(poly, FilterSearchOptions.Intersects)); System.Diagnostics.Debug.Print("*******"); foreach (Row resultRow in resultRows) { System.Diagnostics.Debug.Print(resultRow.Values["District"].ToString()); } } } } }
CopyVB.NET
Imports System Imports System.IO Imports System.Drawing Imports ESRI.ArcGISExplorer Imports ESRI.ArcGISExplorer.Application Imports ESRI.ArcGISExplorer.Mapping Imports ESRI.ArcGISExplorer.Geometry Imports ESRI.ArcGISExplorer.Data Imports ESRI.ArcGISExplorer.Threading Public Class AsyncTrackPolygon Inherits ESRI.ArcGISExplorer.Application.Button Private _districtsTable As Table Public Overloads Overrides Sub OnClick() 'Open the district shapefile _districtsTable = Table.OpenShapefile("C:\Data\district.shp") 'Get the MapDisplay Dim disp As ESRI.ArcGISExplorer.Mapping.MapDisplay = ESRI.ArcGISExplorer.Application.Application.ActiveMapDisplay 'Start tracking asynchronously disp.BeginTrackPolygon(AddressOf TrackDelegate, Color.Red, 6) 'The following code WILL be executed immediately while tracking 'e.g list all files in a folder on disk Dim di As New DirectoryInfo("C:\Data") Dim files As FileInfo() = di.GetFiles("*.*") For Each fi As FileInfo In files System.Diagnostics.Debug.Print(fi.Name) Next End Sub ''' <summary> ''' The delegate used by the BeginTrackPolygon method ''' </summary> Public Sub TrackDelegate(ByVal info As TrackingInfo) Select Case info.Status Case TrackStatus.Cancelled System.Diagnostics.Debug.Print("cancelled") Exit Select Case TrackStatus.Completed Exit Select Case TrackStatus.MouseMoved Exit Select Case TrackStatus.PointAdded 'Perform a spatial query ReportDistrictsIntersectingTheTrackPolygon(info.Geometry) Exit Select Case TrackStatus.PointRemoved 'Perform a spatial query ReportDistrictsIntersectingTheTrackPolygon(info.Geometry) Exit Select Case Else Exit Select End Select End Sub ''' <summary> ''' Reports the districts which intersect the tracked polygon. ''' </summary> Private Sub ReportDistrictsIntersectingTheTrackPolygon(ByVal geom As Geometry) Dim poly As Polygon = TryCast(geom, Polygon) If (poly IsNot Nothing) AndAlso (poly.IsEmpty = False) Then Dim resultRows As RowCollection = _districtsTable.Search(New Filter(poly, FilterSearchOptions.Intersects)) System.Diagnostics.Debug.Print("*******") For Each resultRow As Row In resultRows System.Diagnostics.Debug.Print(resultRow.Values("District").ToString()) Next End If End Sub End Class