• ArcGIS Runtime SDK for .NET (Quartz Beta)之连接ArcGIS Portal


    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();
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    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);
        }
    }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    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;
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    代码

  • 相关阅读:
    201521123069 《Java程序设计》 第13周学习总结
    201521123069 《Java程序设计》 第12周学习总结
    网络15软工个人作业5--软件工程总结
    个人作业4--alpha阶段个人总结
    软工网络15个人作业3——案例分析
    软件工程网络15结对编程作业1
    201521123004《软件工程》个人阅读作业2-提问题
    201521123004《软件工程》个人阅读作业1
    Java课程设计—学生成绩管理系统(201521123004-林艺如)
    201521123004 《Java程序设计》第 14 周学习总结
  • 原文地址:https://www.cnblogs.com/telwanggs/p/6437224.html
Copyright © 2020-2023  润新知