FAQ
ArcGIS Pro SDK: ギャラリーの追加

ナレッジ番号:3356 | 登録日:2023/05/29 | 更新日:2023/06/21

概要

ArcGIS Pro SDK では、ボタンだけでなくギャラリーを追加することができます。ギャラリーには複数のギャラリー アイテムを追加することができ、グループを設定して分類することができます。
ここでは、カレント プロジェクトに挿入されたマップを取得し、そのタイプ (マップあるいはシーン) に応じてグループ表示するためのギャラリーを追加します。

サンプル コード

コード内の<>は半角に置き換えてからサンプル コードをご利用ください。

config.daml

ギャラリーの外観を daml ファイルで定義します。「galleries」カテゴリで、ギャラリー内に表示するギャラリー アイテムの列数 (itemsInRow) や、グループを表示するか (showGroup) といったプロパティを設定します。

      
        
        
          
          
        
      
      
        
      
      
        
          Tooltip text</disabledtext>
        
      

Garally クラス

Garally クラスに、ギャラリーの処理を記述していきます。Initialize メソッドを実行した際に、ギャラリーにギャラリーアイテムを追加する処理を記述します。

private void Initialize()
{
    if (_isInitialized)
        return;

    //プロジェクトのマップを取得
    var maps= Project.Current.GetItems<MapProjectItem>();
    //マップの数だけループ
    foreach (var map in maps)
    {
        //マップの名称を取得
        string mapname = map.Name;
        //マップ名のギャラリーアイテムを追加
        //グループ名はMap クラスの MapType プロパティから取得
        Add(new GalleryItem(mapname, this.LargeImage != null ? ((ImageSource)this.LargeImage).Clone() : null, mapname, map.MapType.ToString()));

    }
    _isInitialized = true;

}

OnClick イベント内で、クリックしたギャラリー アイテムをもとに処理を実装します。ここでは、クリックしたマップを開く処理を実装します。

protected async override void OnClick(GalleryItem item)
{
    //TODO - insert your code to manipulate the clicked gallery item here
    System.Diagnostics.Debug.WriteLine("Remove this line after adding your custom behavior.");
    base.OnClick(item);
    //クリックしたギャラリーアイテムからマップ アイテムを取得
    var mapItem = Project.Current.GetItems<MapProjectItem>().FirstOrDefault(
                                        m => (m.Name ==  item.Text));
    await QueuedTask.Run(() =>
    {
     //マップアイテムから Map オブジェクトを取得
        Map map = mapItem.GetMap();
  //マップ ビューを開く
        ProApp.Panes.CreateMapPaneAsync(map);
    });
}

参考情報

メタデータ

種類

製品