// Handle the OnMapInfoEntered event from the item input UI // MapSavedEventArgs contains the title, description, and tags that were entered private async void MapItemInfoEntered(object sender, MapSavedEventArgs e) { try { // Get information entered by the user for the new portal item properties var title = e.Title; var description = e.Description; var tags = e.Tags; // Get the current extent var currentViewpoint = _mapView.GetCurrentViewpoint(ViewpointType.BoundingGeometry); // Export the current map view for the item's thumbnail RuntimeImage thumbnailImg = await _mapView.ExportImageAsync(); // See if the map has already been saved (has an associated portal item) if (!_mapViewModel.MapIsSaved) { // Call a method on MapViewModel to save the map as a new portal item await _mapViewModel.SaveNewMapAsync(currentViewpoint, title, description, tags, thumbnailImg); // Report a successful save UIAlertController alert = UIAlertController.Create("Saved map", "Saved " + title + " to ArcGIS Online", UIAlertControllerStyle.Alert); alert.AddAction(UIAlertAction.Create("OK", UIAlertActionStyle.Default, null)); PresentViewController(alert, true, null); } else { // Map has previously been saved as a portal item, update it (title, description, and tags will remain the same) _mapViewModel.UpdateMapItem(); // Report success UIAlertController alert = UIAlertController.Create("Updated map", "Saved changes to " + title, UIAlertControllerStyle.Alert); alert.AddAction(UIAlertAction.Create("OK", UIAlertActionStyle.Default, null)); PresentViewController(alert, true, null); } } catch (Exception ex) { // Report save error UIAlertController alert = UIAlertController.Create("Error", ex.Message, UIAlertControllerStyle.Alert); alert.AddAction(UIAlertAction.Create("OK", UIAlertActionStyle.Default, null)); PresentViewController(alert, true, null); } finally { // Get rid of the item input controls if (_mapInfoUI != null) { _mapInfoUI.Hide(); _mapInfoUI = null; } } }
private void SaveButtonClick(object sender, EventArgs e) { // Get the values entered in the text fields var title = _titleTextField.Text.Trim(); var description = _descriptionTextField.Text.Trim(); var tags = _tagsTextField.Text.Split(','); // Make sure all required info was entered if (string.IsNullOrEmpty(title) || string.IsNullOrEmpty(description) || tags.Length == 0) { new UIAlertView("Error", "Please enter a title, description, and some tags to describe the map.", null, "OK", null).Show(); return; } // Fire the OnMapInfoEntered event and provide the map item values if (OnMapInfoEntered != null) { // Create a new MapSavedEventArgs to contain the user's values var mapSaveEventArgs = new MapSavedEventArgs(title, description, tags); // Raise the event OnMapInfoEntered(sender, mapSaveEventArgs); } }