打开移动地图(.mmpk)示例无法编译:DataManager不存在

时间:2018-02-12 16:45:12

标签: c# dictionary arcgis arcgis-runtime-net

我正在尝试这个'打开移动地图'示例使用.mmpk和' Forms'下的代码。此网站链接的标记: OpenMobileMap,Forms tab 但是后面的代码不能编译。我收到错误:' DataManager在当前上下文中不存在'。有什么想法吗?

我在Visual Studio 2017中使用了ArcGIS Runrtime应用程序(Xamarin.Forms共享)模板,并将代码(C#)放在' MapPage.exml.cs文件中。

1 个答案:

答案 0 :(得分:1)

很抱歉听到您遇到麻烦。

.NET的示例查看器(GitHub上提供)使用数据管理器从ArcGIS Online下载示例数据。单个样本使用该类下载所需的数据。

DataManager不是ArcGIS Runtime的组件。如果您对查看它的工作原理感兴趣,可以在示例查看器here中找到所使用的实现。

或者,您可以在已部署的软件包中包含.mmpk,也可以编写自己的代码来下载.mmpk。

例如,以下代码查找下载数据的相应目录:

public string GetDataFolder()
{
    #if NETFX_CORE
        return Windows.Storage.ApplicationData.Current.LocalFolder.Path;
    #else
        return System.Environment.GetFolderPath(System.Environment.SpecialFolder.ApplicationData);
    #endif
}

以下代码从ArcGIS Online下载项目(样本查看器中采用的方法):

// ItemId is the item's identifier on ArcGIS Online
private async Task GetData(string itemId)
{
    // Create the portal
    var portal = await ArcGISPortal.CreateAsync().ConfigureAwait(false);

    // Create the portal item
    var item = await PortalItem.CreateAsync(portal, itemId).ConfigureAwait(false);

    // Create the SampleData folder
    var tempFile = Path.Combine(GetDataFolder(), "Data");
    createDir(new DirectoryInfo(tempFile));

    // Get the full path to the specific file
    tempFile = Path.Combine(tempFile, item.Name);

    // Download the file
    using (var s = await item.GetDataAsync().ConfigureAwait(false))
    {
        using (var f = File.Create(tempFile))
        {
            await s.CopyToAsync(f).ConfigureAwait(false);
        }
    }
}

在API参考文档中,引用DataManager的代码将替换为假设已下载数据的代码(example)。对于示例文档部分中的代码,尚未执行此操作。我在未来的版本中打开了一个问题来解决这个问题。

编辑:我回复了另一个问题,但看起来它已丢失了,所以我想在这里添加它。引用的“数据管理器”代码具有解压缩zip存档的功能。该代码需要引用System.IO.Compression.FileSystem。您可以使用Visual Studio添加引用(在每个单独的平台项目中右键单击“引用”,选择“添加引用”,然后搜索)。已更新的.csproj文件的示例位于GitHub