private async void ApplyUpdates() { try { // Create default sync parameters. OfflineMapSyncParameters parameters = await _offlineMapSyncTask.CreateDefaultOfflineMapSyncParametersAsync(); // Set the parameters to download all updates for the mobile map packages. parameters.PreplannedScheduledUpdatesOption = PreplannedScheduledUpdatesOption.DownloadAllUpdates; // Set the map package to rollback to the old state should the sync job fail. parameters.RollbackOnFailure = true; // Create a sync job using the parameters. OfflineMapSyncJob offlineMapSyncJob = _offlineMapSyncTask.SyncOfflineMap(parameters); // Get the results of the job. offlineMapSyncJob.Start(); OfflineMapSyncResult result = await offlineMapSyncJob.GetResultAsync(); // Check if the job succeeded. if (offlineMapSyncJob.Status == JobStatus.Succeeded) { // Check if the map package needs to be re-opened. if (result.IsMobileMapPackageReopenRequired) { // Re-open the mobile map package. _mobileMapPackage.Close(); await _mobileMapPackage.LoadAsync(); // Check that the mobile map package was loaded. if (_mobileMapPackage.LoadStatus == Esri.ArcGISRuntime.LoadStatus.Loaded && _mobileMapPackage.Maps.Any()) { // Set the mapview to the map from the package. Map offlineMap = _mobileMapPackage.Maps[0]; MyMapView.Map = offlineMap; // Create an offline map sync task for the map. _offlineMapSyncTask = await OfflineMapSyncTask.CreateAsync(offlineMap); } else { await Application.Current.MainPage.DisplayAlert("Error", "Failed to load the mobile map package.", "OK"); } } // Verify that the map is up to date and change the UI to reflect the update availability status. CheckForScheduledUpdates(); } else { await Application.Current.MainPage.DisplayAlert("Error", "Error syncing the offline map.", "OK"); } } catch (Exception ex) { await Application.Current.MainPage.DisplayAlert("Error", ex.Message, "OK"); } }
private async void ApplyUpdatesClicked(object sender, EventArgs e) { try { // Create default sync parameters. OfflineMapSyncParameters parameters = await _offlineMapSyncTask.CreateDefaultOfflineMapSyncParametersAsync(); // Set the parameters to download all updates for the mobile map packages. parameters.PreplannedScheduledUpdatesOption = PreplannedScheduledUpdatesOption.DownloadAllUpdates; // Create a sync job using the parameters. OfflineMapSyncJob offlineMapSyncJob = _offlineMapSyncTask.SyncOfflineMap(parameters); // Get the results of the job. offlineMapSyncJob.Start(); OfflineMapSyncResult result = await offlineMapSyncJob.GetResultAsync(); // Check if the job succeeded. if (offlineMapSyncJob.Status == JobStatus.Succeeded) { // Check if the map package needs to be re-opened. if (result.IsMobileMapPackageReopenRequired) { // Re-open the mobile map package. _mobileMapPackage.Close(); _mobileMapPackage = new MobileMapPackage(_mapPackagePath); await _mobileMapPackage.LoadAsync(); // Check that the mobile map package was loaded. if (_mobileMapPackage.LoadStatus == Esri.ArcGISRuntime.LoadStatus.Loaded && _mobileMapPackage.Maps.Any()) { // Set the mapview to the map from the package. Map offlineMap = _mobileMapPackage.Maps[0]; _myMapView.Map = offlineMap; // Create an offline map sync task for the map. _offlineMapSyncTask = await OfflineMapSyncTask.CreateAsync(offlineMap); } else { new UIAlertView("Error", "Failed to load the mobile map package.", (IUIAlertViewDelegate)null, "OK", null).Show(); } } // Verify that the map is up to date and change the UI to reflect the update availability status. CheckForScheduledUpdates(); } else { new UIAlertView("Error", "Error syncing the offline map.", (IUIAlertViewDelegate)null, "OK", null).Show(); } } catch (Exception ex) { new UIAlertView("Error", ex.Message, (IUIAlertViewDelegate)null, "OK", null).Show(); } }