2017-02-20 7 views
0

私はXamarin Android用の.NetランタイムSDK(v.100)を使用しています。モバイルアプリでオフラインで使用する.tpkとしてタイルをダウンロードしようとしています。ArcGIS .NETランタイムSDKを使用してExportTileCacheJobを正しく設定する方法

私は自分のアプリのトークンを私に与えるためにAuthenticationManagerを使用することができました。私は正常にExportTileCacheTaskを作成し、ExportTileCacheTaskでExportTileCacheを呼び出すことによって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(); 
} 

答えて

0

明らかに、ExportTileCacheに関するツールチップのドキュメントは誤解を招くようです。実際には、を開始し、ExportTileCacheJobを返しません。開始するには、ジョブでStart()を呼び出す必要があります。

私はついにこれを述べたクラスのJavaドキュメントを発見しました。 https://developers.arcgis.com/android/latest/api-reference/reference/com/esri/arcgisruntime/tasks/tilecache/ExportTileCacheJob.html

Start()を呼び出した後、JobChangedイベントが期待どおりに発生し、.tpkファイルを正常にダウンロードできました。

+0

サンプルもあります:https://geonet.esri.com/thread/189336-exporttilecache-runtime-v1000#comment-662430また、 'await job.GetResultAsync()'を呼び出すと開始がトリガーされます サンプルはすぐにサンプルのレポに追加されます... – dotMorten

関連する問題