空间书签
Spatial Bookmark保存的是地图的范围。就像书签一样可以快速地定位到一个预先定义好的相关主题区域去。空间书签的管理主要是增加、调用、删除空间书签。
空间书签添加
Private Sub AddSpatialBookMark_Click()
'定义文档对象
Dim pMxDoc As IMxDocument
'定义地图对象
Dim pMap As IMap
'定义活动视图对象
Dim pActiveView As IActiveView
'定义空间书签对象
Dim pAreaOfInterest As IAOIBookmark
'定义地图书签集合对象。因为所有的空间书签都是由Map对象来管理的。
Dim pMapBookmarks As IMapBookmarks
'取得文档对象
Set pMxDoc = Application.Document
'取得焦点Map对象
Set pMap = pMxDoc.FocusMap
'设置当前活动视图
Set pActiveView = pMap
'创建一个新的空间书签对象,并设置它定位到焦点地图的当前可视范围
Set pAreaOfInterest = New AOIBookmark
Set pAreaOfInterest.Location = pActiveView.Extent
'设置空间书签的名称属性
pAreaOfInterest.Name = "My bookmark"
'取得当前地图书签集合对象
Set pMapBookmarks = pMap
'把空间书签加入到集合中
pMapBookmarks.AddBookmark pAreaOfInterest
End Sub
空间书签调用
Private Sub ZoomToBookmark_Click()
'定义文档对象
Dim pMxDoc As IMxDocument
'定义地图书签集合对象
Dim pMapBookmarks As IMapBookmarks
'定义空间书签集合
Dim pEnumBookmarks As IEnumSpatialBookmark
'定义空间书签
Dim pBookmark As ISpatialBookmark
'取得文档对象
Set pMxDoc = Application.Document
'取得地图书签集合
Set pMapBookmarks = pMxDoc.FocusMap
'取得空间书签集合
Set pEnumBookmarks = pMapBookmarks.Bookmarks
'重置空间书签集合,把索引指针归到最开始
pEnumBookmarks.Reset
'取得第一个空间书签
Set pBookmark = pEnumBookmarks.Next
'一直执行直到遍历了所有空间书签
Do While Not pBookmark Is Nothing
'判断是否是目标书签
If pBookmark.Name = "My bookmark" Then
'如果是目标书签则调用目标书签的ZoomTo方法,把当前地图可视范围设置成书签范围.
pBookmark.ZoomTo pMxDoc.FocusMap
'刷新文档的活动视图
pMxDoc.ActiveView.Refresh
'退出过程
Exit Sub
End If
'取得下一条空间书签
Set pBookmark = pEnumBookmarks.Next
Loop
End Sub