In this topic
Zooming in on the map
The following code example shows how to zoom in on the map in the active view:
[C#] public void ZoomInCenter(IApplication application)
{
IMxDocument mxDocument=application.Document as IMxDocument;
// Try the following different options to see how the code works in data or layout view:
IActiveView activeView=mxDocument.ActiveView;
//Dim activeView As IActiveView=mxDocument.PageLayout
//Dim activeView As IActiveView=mxDocument.FocusMap
// Get an envelope corresponding to the view extent.
IEnvelope envelope=activeView.Extent;
// Get the center point of the envelope.
IPoint centerPoint=new PointClass();
centerPoint.X=((envelope.XMax - envelope.XMin) / 2) + envelope.XMin;
centerPoint.Y=((envelope.YMax - envelope.YMin) / 2) + envelope.YMin;
//Resize the envelope width.
envelope.Width=envelope.Width / 2;
//Resize the envelope height.
envelope.Height=envelope.Height / 2;
//Move the envelope to the center point.
envelope.CenterAt(centerPoint);
//Set the envelope to view extent.
activeView.Extent=envelope;
activeView.Refresh();
}
[VB.NET] Public Sub ZoomInCenter(ByVal application As IApplication)
Dim mxDocument As IMxDocument=TryCast(application.Document, IMxDocument)
' Try the following different options to see how the code works in data or layout view:
Dim activeView As IActiveView=mxDocument.ActiveView
'Dim activeView As IActiveView=mxDocument.PageLayout
'Dim activeView As IActiveView=mxDocument.FocusMap
' Get an envelope corresponding to the view extent.
Dim envelope As IEnvelope=activeView.Extent
' Get the center point of the envelope.
Dim centerPoint As IPoint=New PointClass()
centerPoint.X=((envelope.XMax - envelope.XMin) / 2) + envelope.XMin
centerPoint.Y=((envelope.YMax - envelope.YMin) / 2) + envelope.YMin
'Resize the envelope width.
envelope.Width=envelope.Width / 2
'Resize the envelope height.
envelope.Height=envelope.Height / 2
'Move the envelope to the center point.
envelope.CenterAt(centerPoint)
'Set the envelope to view extent.
activeView.Extent=envelope
activeView.Refresh()
End Sub
Listening to map events
The following code example demonstrates listening to map events:
[C#] private IMapEvents_FeatureClassChangedEventHandler dFeatClsChangedE;
private IMapEvents_VersionChangedEventHandler dVerChangedE;
private void ListenToMapEvents(IApplication application)
{
IDocument document=application.Document;
IMapDocument mapDoc=document as IMapDocument;
IActiveView activeView=mapDoc.ActiveView;
IMap map=activeView.FocusMap;
IMapEvents_Event mapEvents=map as IMapEvents_Event;
//Initialize the delegate to point to a function where you respond to the event being raised.
dFeatClsChangedE=new IMapEvents_FeatureClassChangedEventHandler
(OnFeatureClassChangedFunction);
dVerChangedE=new IMapEvents_VersionChangedEventHandler
(OnVersionChangedFunction);
mapEvents.VersionChanged += dVerChangedE;
// Wire the delegate to the FeatureClassChanged event of the mapEvents variable.
mapEvents.FeatureClassChanged += dFeatClsChangedE;
}
private void OnFeatureClassChangedFunction(IFeatureClass oldClass, IFeatureClass
newClass)
{
// Listen to the FeatureClassChanged event of IMapEvents.
MessageBox.Show("Feature Class changed");
}
private void OnVersionChangedFunction(IVersion oldVersion, IVersion newVersion)
{
MessageBox.Show("Version Changed");
}
[VB.NET] Private dFeatClsChangedE As IMapEvents_FeatureClassChangedEventHandler
Private dVerChangedE As IMapEvents_VersionChangedEventHandler
Private Sub ListenToMapEvents(ByVal application As IApplication)
Dim document As IDocument=application.Document
Dim mapDoc As IMapDocument=CType(document, IMapDocument)
Dim activeView As IActiveView=mapDoc.ActiveView
Dim map As IMap=activeView.FocusMap
Dim mapEvents As IMapEvents_Event=TryCast(map, IMapEvents_Event)
'Initialize the delegate to point to a function where you respond to the event being raised.
dFeatClsChangedE=New IMapEvents_FeatureClassChangedEventHandler(AddressOf OnFeatureClassChangedFunction)
dVerChangedE=New IMapEvents_VersionChangedEventHandler(AddressOf OnVersionChangedFunction)
AddHandler mapEvents.VersionChanged, dVerChangedE
' Wire the delegate to the FeatureClassChanged event of the mapEvents variable.
AddHandler mapEvents.FeatureClassChanged, dFeatClsChangedE
End Sub
Private Sub OnFeatureClassChangedFunction(ByVal oldClass As IFeatureClass, ByVal newClass As IFeatureClass)
' Listen to the FeatureClassChanged event of IMapEvents.
MessageBox.Show("Feature Class changed")
End Sub
Private Sub OnVersionChangedFunction(ByVal oldVersion As IVersion, ByVal newVersion As IVersion)
MessageBox.Show("Version Changed")
End Sub
Loading a table
The following code example loads a table into the focus map:
[C#] public void AddTable(IMap map, IMxDocument mxDocument)
{
ITableCollection tableCollection=map as ITableCollection;
string tablePathName=
"C:\\Program Files\\ArcGIS\\DeveloperKit10.0\\Samples\\data\\Y2000HurricaneData";
string tableName="2000_hrcn.dbf";
ITable table=OpenTable(tablePathName, tableName);
if (table == null)
{
return ;
}
else
{
tableCollection.AddTable(table);
mxDocument.UpdateContents();
}
}
public ITable OpenTable(string pathName, string tableName)
{
// Create the workspace name object.
IWorkspaceName workspaceName=new WorkspaceNameClass();
workspaceName.PathName=pathName;
workspaceName.WorkspaceFactoryProgID=
"esriDataSourcesFile.shapefileworkspacefactory";
// Create the table name object.
IDatasetName dataSetName=new TableNameClass();
dataSetName.Name=tableName;
dataSetName.WorkspaceName=workspaceName;
// Open the table.
IName name=dataSetName as IName;
ITable table=name.Open()as ITable;
return table;
}
[VB.NET] Public Sub AddTable(ByVal map As IMap, ByVal mxDocument As IMxDocument)
Dim tableCollection As ITableCollection=TryCast(map, ITableCollection)
Dim tablePathName As String="C:\Program Files\ArcGIS\DeveloperKit10.0\Samples\data\Y2000HurricaneData"
Dim tableName As String="2000_hrcn.dbf"
Dim table As ITable=OpenTable(tablePathName, tableName)
If (table Is Nothing) Then
Return
Else
tableCollection.AddTable(table)
mxDocument.UpdateContents()
End If
End Sub
Public Function OpenTable(ByVal pathName As String, ByVal tableName As String) As ITable
' Create the workspace name object.
Dim workspaceName As IWorkspaceName=New WorkspaceNameClass()
workspaceName.PathName=pathName
workspaceName.WorkspaceFactoryProgID="esriDataSourcesFile.shapefileworkspacefactory"
' Create the table name object.
Dim dataSetName As IDatasetName=New TableNameClass()
dataSetName.Name=tableName
dataSetName.WorkspaceName=workspaceName
' Open the table.
Dim Name As IName=TryCast(dataSetName, IName)
Dim table As ITable=TryCast(Name.Open(), ITable)
Return table
End Function
To use the code in this topic, reference the following assemblies in your Visual Studio project. In the code files, you will need using (C#) or Imports (VB .NET) directives for the corresponding namespaces (given in parenthesis below if different from the assembly name):
- ESRI.ArcGIS.ArcMapUI
- ESRI.ArcGIS.Carto
- ESRI.ArcGIS.Framework
- ESRI.ArcGIS.Geodatabase
- ESRI.ArcGIS.Geometry
- ESRI.ArcGIS.System (ESRI.ArcGIS.esriSystem)
Development licensing | Deployment licensing |
---|---|
ArcGIS Desktop Standard | ArcGIS Desktop Standard |
ArcGIS Desktop Basic | ArcGIS Desktop Basic |
ArcGIS Desktop Advanced | ArcGIS Desktop Advanced |