ArcGIS Runtime SDK for .NET (Quartz Beta)之連線ArcGIS Portal (1)
阿新 • • 發佈:2019-01-31
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;