FAQ
ブックマークの取得

ナレッジ番号:5281 | 登録日:2023/07/26 | 更新日:2023/12/28

概要

このサンプル コードは、マップに定義されたブックマークにアクセスし、その中のひとつの範囲にマップを拡大する方法を示します。

サンプル コード

ブックマーク一覧へアクセスしてその中のひとつにマップを拡大

マップに定義されたブックマークにアクセスし、一覧を取得します。ブックマークの一覧はリストダイアログに表示し、その中から選択されたブックマークの範囲にマップを拡大します。

//マップにアクセス
IMap pMap = ArcMap.Document.FocusMap;

//IMapBookmarks2 にキャスト
IMapBookmarks2 pMapBookmarks2 = pMap as IMapBookmarks2;

//コレクションにブックマークを追加
pMapBookmarks2.SortBookmarks(true);

//ListDialog 内ではソートされるため、
//インデックス番号と表示順を合わせるためにブックマークも並べ替える
IMapBookmarks pMapBookmarks = pMapBookmarks2 as IMapBookmarks;

//ブックマークのリストを取得
IEnumSpatialBookmark pEnumSpatialBookmark = pMapBookmarks.Bookmarks;
pEnumSpatialBookmark.Reset();

//各ブックマークにアクセス
 ISpatialBookmark pSpatialBookmark = pEnumSpatialBookmark.Next();
            
//空のリストダイアログを作成
IListDialog pListDialog = new ListDialogClass();
            
while(pSpatialBookmark != null)
{
    //ブックマークの名前をリストダイアログに追加
    pListDialog.AddString(pSpatialBookmark.Name);
    pSpatialBookmark = pEnumSpatialBookmark.Next();
}

//リストダイアログを表示
pListDialog.DoModal("ブックマーク一覧", 0, 0);

//ブックマークのリストをリセットし、各ブックマークに再度アクセス
pEnumSpatialBookmark.Reset();
pSpatialBookmark = pEnumSpatialBookmark.Next();
            
//リストダイアログでブックマークをクリックしたときの処理
int bookmarkCount = 0;
while(pSpatialBookmark != null)
{
    if (bookmarkCount == pListDialog.Choice)
    {
        //ブックマークにズーム
        pSpatialBookmark.ZoomTo(pMap);
        //マップの再描画
        ArcMap.Document.ActivatedView.Refresh();
        break;
    }
    bookmarkCount = bookmarkCount + 1;
    pSpatialBookmark = pEnumSpatialBookmark.Next();
}
'マップにアクセス
Dim pMap As IMap = My.ArcMap.Document.FocusMap

'IMapBookmarks2 にキャスト
Dim pMapBookmarks2 As IMapBookmarks2 = CType(pMap, IMapBookmarks2)
pMapBookmarks2 = pMap

'コレクションにブックマークを追加
pMapBookmarks2.SortBookmarks(True)

'ListDialog 内ではソートされるため、
'インデックス番号と表示順を合わせるためにブックマークも並べ替える
Dim pMapBookmarks As IMapBookmarks = pMapBookmarks2

'ブックマークのリストを取得
Dim pEnumSpatialBookmark As IEnumSpatialBookmark
pEnumSpatialBookmarks = pMapBookmarks.Bookmark
pEnumSpatialBookmark.Reset()

'各ブックマークにアクセス
Dim pSpatialBookmark As ISpatialBookmark
pSpatialBookmark = pEnumSpatialBookmark.Next

'空のリストダイアログを作成
Dim pListDialog As IListDialog = New ListDialog

While Not (pSpatialBookmark Is Nothing)
   'ブックマークの名前をリストダイアログに追加
   pListDialog.AddString(pSpatialBookmark.Name)
   pSpatialBookmark = pEnumSpatialBookmarks.Next
End While

'リストダイアログを表示
pListDialog.DoModal("ブックマーク一覧", 0, 0)

'ブックマークのリストをリセットし、各ブックマークに再度アクセス
pEnumSpatialBookmark.Reset()
pSpatialBookmark = pEnumSpatialBookmark.Next

'リストダイアログでブックマークをクリックしたときの処理
Dim bookmarkCount As Integer = 0
Do Until pSpatialBookmark Is Nothing
   If bookmarkCount = pListDialog.Choice Then
       'ブックマークにズームする
       pSpatialBookmark.ZoomTo(pmap)
       'マップを再描画
       My.ArcMap.Document.ActiveView.Refresh()
   Exit Do
   End If
       bookmarkCount = bookmarkCount + 1
       pSpatialBookmark = pEnumSpatialBookmark.Next
Loop

メタデータ

種類

製品