0

我正在为 Xamarin Android 使用 .Net 运行时 sdk (v.100)。我正在尝试将图块下载为 .tpk 以供我的移动应用程序离线使用。

我已经设法使用 AuthenticationManager 为我的应用程序提供了一个令牌。我可以通过在 ExportTileCacheTask 上调用 ExportTileCache 成功创建 ExportTileCacheTask 并创建 ExportTileCacheJob,但作业的状态似乎永远不会改变。当我在调用 ExportTileCache 后立即检查作业状态时,它是“NotStarted”并且 ServerId =“”。我的 ExportJob_JobChanged 处理程序上有一个断点,无论我等待多长时间,它都不会被击中。

有任何想法吗?下面的代码:

var serviceUri = new Uri("https://tiledbasemaps.arcgis.com/arcgis/rest/services/World_Imagery/MapServer");
var tokenUri = new Uri("https://www.arcgis.com/sharing/rest");
try
{
    var serverInfo = new ServerInfo
    {
        ServerUri = tokenUri,
        TokenAuthenticationType = TokenAuthenticationType.OAuthClientCredentials,
        OAuthClientInfo = new OAuthClientInfo { ClientId = MYCLIENTID, ClientSecret = MYCLIENTSECRET) },
    };
    AuthenticationManager.Current.RegisterServer(serverInfo);

    var cred = await AuthenticationManager.Current.GenerateCredentialAsync(tokenUri, new GenerateTokenOptions { });

    var exportTask = await ExportTileCacheTask.CreateAsync(serviceUri, cred);


    var exportParams = await exportTask.CreateDefaultExportTileCacheParametersAsync(aoi, 50000, 10000);

    job = exportTask.ExportTileCache(exportParams, localFilePath);
    job.JobChanged += ExportJob_JobChanged;
}
catch (Exception e)
{
    e.ToString();
}
4

1 回答 1

1

显然 ExportTileCache 上的工具提示文档具有误导性。实际上,它不会启动并返回 ExportTileCacheJob。您必须在作业上调用 Start() 才能启动它。

我终于找到了提到这个的类的java文档。 https://developers.arcgis.com/android/latest/api-reference/reference/com/esri/arcgisruntime/tasks/tilecache/ExportTileCacheJob.html

调用 Start() 后,JobChanged 事件按预期触发,我能够成功下载 .tpk 文件。

于 2017-02-27T21:55:36.127 回答