我正在尝试这个'打开移动地图'示例使用.mmpk和' Forms'下的代码。此网站链接的标记: OpenMobileMap,Forms tab 但是后面的代码不能编译。我收到错误:' DataManager在当前上下文中不存在'。有什么想法吗?
我在Visual Studio 2017中使用了ArcGIS Runrtime应用程序(Xamarin.Forms共享)模板,并将代码(C#)放在' MapPage.exml.cs文件中。
答案 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。