1. 程式人生 > >ArcGIS Runtime SDK for .NET (Quartz Beta)之連線ArcGIS Portal (1)

ArcGIS Runtime SDK for .NET (Quartz Beta)之連線ArcGIS Portal (1)

1. 介紹
ArcGIS Portal作為ArcGIS平臺的中樞,在ArcGIS體系中起著至關重要的地位。在ArcGIS Runtime的新架構Quartz中添加了連線ArcGIS Portal(或ArcGIS Online),建立修改ArcGIS Portal(或ArcGIS Online)的Item的功能。(以下Portal都代指ArcGIS Portal或ArcGIS Online)
2.連線Portal
連線ArcGIS Portal和ArcGIS Online的方法是一樣的。都是使用ArcGISPortal這個類去連線Portal。

// 使用portal地址,使用者名稱,密碼建立token憑證
var cred = await AuthenticationManager.Current.GenerateCredentialAsync( new Uri("http://esrihax.maps.arcgis.com/sharing/rest"), userName, password) as ArcGISTokenCredential; // 通過token連線Portal
ArcGISPortal portal = await ArcGISPortal.CreateAsync( new Uri("http://esrihax.maps.arcgis.com/sharing/rest"), CancellationToken.None, cred); // 獲取當前portal的使用者和其許可權
ArcGISPortalUser user = portal.CurrentUser; IEnumerable<string> privileges = await user.GetPrivilegesAsync();

3.獲取Portal資訊
連線Portal後我們可以獲得當前使用者的下的所有資訊。包括使用者下所有資料夾所有專案。

//獲取當前使用者
var thisUser = myPortal.CurrentUser;
if(thisUser == null) { return; }

// 獲取當前使用者下的資料夾和專案
var folders = await thisUser.GetFoldersAsync();
var portalItems = await thisUser.GetItemsAsync();

// 顯示所有專案
Debug.Print("Items for " + thisUser.FullName + ":");
foreach(var itm in portalItems)
{
    Debug.Print(itm.Title);
}

// 顯示所有資料夾
foreach(var f in folders)
{
    Debug.Print("Contents of folder '" + f.Title + "'");
    foreach (var i in await f.GetItemsAsync())
    {
        Debug.Print("--" + i.Title);
    }
}

4.利用id顯示地圖
在Portal中,製作好的地圖都有個對應的id。
這裡寫圖片描述
這裡寫圖片描述

儲存之後進入“我的內容”開啟儲存的web map。
這裡寫圖片描述
我們可以看到url中有一段…?id=…..。我們可以使用這個id開啟這個web map。

// 連線Portal
ArcGISPortal arcGISOnline = await ArcGISPortal.CreateAsync();

// 使用專案的id建立portal專案
var portalItem = await ArcGISPortalItem.CreateAsync(arcGISOnline, "01f052c8995e4b9e889d73c3e210ebe3");
// 通過portal專案建立map
var webMap = new Map(portalItem);

// 把map新增到MapView中
MyMapView.Map = webMap;

程式碼