2017-02-20 19 views
0

我對Xamarin Android使用.Net運行時sdk(v.100)。我正嘗試下載瓷磚作爲.tpk供我的移動應用程序離線使用。如何使用ArcGIS.net正確設置ExportTileCacheJob運行時sdk

我設法使用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