GetBookmarks Method (Map)
Returns the map's collection of bookmarks. This method must be called on the MCT. Use QueuedTask.Run.
Return Value
The collection of bookmarks for the map.
MapFrame_SetCamera_Bookmark
//Set the extent of a map frame to a bookmark.
//Perform on the worker thread
await QueuedTask.Run(() =>
{
//Reference MapFrame
MapFrame mf_bk = layout.FindElement("Map Frame") as MapFrame;
//Reference a bookmark that belongs to a map associated with the map frame
Map m = mf_bk.Map;
Bookmark bk = m.GetBookmarks().FirstOrDefault(item => item.Name.Equals("Lakes"));
//Set the map frame extent using the bookmark
mf_bk.SetCamera(bk);
});
Create Map Frame and Set Camera
//Create a map frame and set its camera by zooming to the extent of an existing bookmark.
//Construct on the worker thread
await QueuedTask.Run(() =>
{
//Build 2D envelope geometry
Coordinate2D mf_ll = new Coordinate2D(6.0, 8.5);
Coordinate2D mf_ur = new Coordinate2D(8.0, 10.5);
//At 2.x - Envelope mf_env = EnvelopeBuilder.CreateEnvelope(mf_ll, mf_ur);
Envelope mf_env = EnvelopeBuilderEx.CreateEnvelope(mf_ll, mf_ur);
//Reference map, create MF and add to layout
MapProjectItem mapPrjItem = Project.Current.GetItems<MapProjectItem>()
.FirstOrDefault(item => item.Name.Equals("Map"));
Map mfMap = mapPrjItem.GetMap();
Bookmark bookmark = mfMap.GetBookmarks().FirstOrDefault(
b => b.Name == "Great Lakes");
//At 2.x - MapFrame mfElm =
// LayoutElementFactory.Instance.CreateMapFrame(
// layout, mf_env, mfMap);
// mfElm.SetName("New Map Frame");
//
MapFrame mfElm = ElementFactory.Instance.CreateMapFrameElement(
layout, mf_env, mfMap, "New Map Frame");
//Zoom to bookmark
mfElm.SetCamera(bookmark);
});
Zoom To Bookmark by name
public Task<bool> ZoomToBookmark(string bookmarkName)
{
return QueuedTask.Run(() =>
{
//Get the active map view.
var mapView = MapView.Active;
if (mapView == null)
return false;
//Get the first bookmark with the given name.
var bookmark = mapView.Map.GetBookmarks().FirstOrDefault(b => b.Name == bookmarkName);
if (bookmark == null)
return false;
//Zoom the view to the bookmark.
return mapView.ZoomTo(bookmark);
});
}
public async Task<bool> ZoomToBookmarkAsync(string bookmarkName)
{
//Get the active map view.
var mapView = MapView.Active;
if (mapView == null)
return false;
//Get the first bookmark with the given name.
var bookmark = await QueuedTask.Run(() => mapView.Map.GetBookmarks().FirstOrDefault(b => b.Name == bookmarkName));
if (bookmark == null)
return false;
//Zoom the view to the bookmark.
return await mapView.ZoomToAsync(bookmark, TimeSpan.FromSeconds(2));
}
Get the collection of bookmarks for the project
public Task<ReadOnlyObservableCollection<Bookmark>> GetProjectBookmarksAsync()
{
//Get the collection of bookmarks for the project.
return QueuedTask.Run(() => Project.Current.GetBookmarks());
}
Get Map Bookmarks
public Task<ReadOnlyObservableCollection<Bookmark>> GetActiveMapBookmarksAsync()
{
return QueuedTask.Run(() =>
{
//Get the active map view.
var mapView = MapView.Active;
if (mapView == null)
return null;
//Return the collection of bookmarks for the map.
return mapView.Map.GetBookmarks();
});
}
Remove bookmark with a given name
public Task RemoveBookmarkAsync(Map map, string name)
{
return QueuedTask.Run(() =>
{
//Find the first bookmark with the name
var bookmark = map.GetBookmarks().FirstOrDefault(b => b.Name == name);
if (bookmark == null)
return;
//Remove the bookmark
map.RemoveBookmark(bookmark);
});
}
Target Platforms: Windows 11, Windows 10
ArcGIS Pro version: 3 or higher.