How to create AOIs and bookmarks


Summary
The code in this topic demonstrates how to create areas of interest (AOIs) and bookmarks.


Creating AOIs and bookmarks

The following code example shows how to create AOIs and bookmarks:
[C#]
private void AddSpatialBookMark(IApplication application)
{
    IMapDocument mapDoc = application.Document as IMapDocument;
    IMap map = mapDoc.ActiveView.FocusMap;
    IActiveView activeView = map as IActiveView;

    // Create a new bookmark and set its location to the focus map's current extent.
    IAOIBookmark areaOfInterest = new AOIBookmarkClass();
    areaOfInterest.Location = activeView.Extent;

    // Give the bookmark a name.
    areaOfInterest.Name = "Area of Interest Bookmark";

    // Add the bookmark to the map's bookmark collection. This adds the bookmark 
    // to the Bookmarks menu, which is accessible from the View menu.
    IMapBookmarks mapBookmarks = map as IMapBookmarks;
    mapBookmarks.AddBookmark(areaOfInterest);
}
[VB.NET]
Private Sub AddSpatialBookMark(ByVal application As IApplication)
    
    Dim mapDoc As IMapDocument = TryCast(application.Document, IMapDocument)
    Dim map As IMap = mapDoc.ActiveView.FocusMap
    Dim activeView As IActiveView = TryCast(map, IActiveView)
    
    ' Create a new bookmark and set its location to the focus map's current extent.
    Dim areaOfInterest As IAOIBookmark = New AOIBookmarkClass()
    areaOfInterest.Location = activeView.Extent
    
    ' Give the bookmark a name.
    areaOfInterest.Name = "Area of Interest Bookmark"
    
    ' Add the bookmark to the map's bookmark collection. This adds
    ' the bookmark to the Bookmarks menu accessible from the View menu.
    Dim mapBookmarks As IMapBookmarks = TryCast(map, IMapBookmarks)
    mapBookmarks.AddBookmark(areaOfInterest)
    
End Sub

Finding an existing spatial bookmark

The following code example shows how to find an existing spatial bookmark and zoom to its stored extent:
[C#]
private void ZoomToBookmark(IApplication application, IMxDocument mxDocument)
{
    IDocument document = application.Document;
    IMapDocument mapDoc = document as IMapDocument;
    IActiveView activeView = mapDoc.ActiveView;
    IMap map = activeView.FocusMap;

    // Access the Map object through its IMapBookmarks interface.
    IMapBookmarks mapBookmarks = map as IMapBookmarks;

    // Get an enumeration of bookmarks.
    IEnumSpatialBookmark enumSpatialBookmark = mapBookmarks.Bookmarks;
    enumSpatialBookmark.Reset();
    ISpatialBookmark spatialBookmark = enumSpatialBookmark.Next();

    while (spatialBookmark != null)
    {
        if (spatialBookmark.Name == "Area of Interest Bookmark")
        {
            // Zoom to spatialBookmark.
            spatialBookmark.ZoomTo(map);
            activeView.Refresh();
            return ;
        }
        spatialBookmark = enumSpatialBookmark.Next();
    }
}
[VB.NET]
Private Sub ZoomToBookmark(ByVal application As IApplication, ByVal mxDocument As IMxDocument)
    
    Dim document As IDocument = application.Document
    Dim mapDoc As IMapDocument = TryCast(document, IMapDocument)
    Dim activeView As IActiveView = mapDoc.ActiveView
    Dim map As IMap = activeView.FocusMap
    
    ' Access the Map object through its IMapBookmarks interface.
    Dim mapBookmarks As IMapBookmarks = TryCast(map, IMapBookmarks)
    
    ' Get an enumeration of bookmarks.
    Dim enumSpatialBookmark As IEnumSpatialBookmark = mapBookmarks.Bookmarks
    enumSpatialBookmark.Reset()
    Dim spatialBookmark As ISpatialBookmark = enumSpatialBookmark.Next()
    
    While (spatialBookmark IsNot Nothing)
        
        If (spatialBookmark.Name Is "Area of Interest Bookmark") Then
            
            ' Zoom to spatialBookmark.
            spatialBookmark.ZoomTo(map)
            activeView.Refresh()
            Return
        End If
        
        spatialBookmark = enumSpatialBookmark.Next()
        
    End While
    
End Sub






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):
Development licensing Deployment licensing
ArcGIS for Desktop Basic ArcGIS for Desktop Basic
ArcGIS for Desktop Standard ArcGIS for Desktop Standard
ArcGIS for Desktop Advanced ArcGIS for Desktop Advanced