private async void Initialize() { try { _myMapView.Map = new Map(BasemapStyle.ArcGISTopographic); // Create an overlay for visualizing tactical messages and add it to the map. _tacticalMessageOverlay = new GraphicsOverlay(); _myMapView.GraphicsOverlays.Add(_tacticalMessageOverlay); // Prevent graphics from showing up when zoomed too far out. _tacticalMessageOverlay.MinScale = 1000000; // Create a symbol dictionary style following the mil2525d spec. string symbolFilePath = DataManager.GetDataFolder("c78b149a1d52414682c86a5feeb13d30", "mil2525d.stylx"); DictionarySymbolStyle mil2525DStyle = await DictionarySymbolStyle.CreateFromFileAsync(symbolFilePath); // Use the dictionary symbol style to render graphics in the overlay. _tacticalMessageOverlay.Renderer = new DictionaryRenderer(mil2525DStyle); // Load the military messages and render them. LoadMilitaryMessages(); // Get the extent of the graphics. Envelope graphicExtent = GeometryEngine.CombineExtents(_tacticalMessageOverlay.Graphics.Select(graphic => graphic.Geometry)); // Zoom to the extent of the graphics. await _myMapView.SetViewpointGeometryAsync(graphicExtent, 10); } catch (Exception e) { Console.WriteLine(e); ShowMessage(e.ToString(), "Error"); } }
private async void Initialize() { // Construct the map and set the MapView.Map property. Map map = new Map(Basemap.CreateLightGrayCanvasVector()); _myMapView.Map = map; try { // Create a ClosestFacilityTask using the San Diego Uri. _task = await ClosestFacilityTask.CreateAsync(new Uri("https://sampleserver6.arcgisonline.com/arcgis/rest/services/NetworkAnalysis/SanDiego/NAServer/ClosestFacility")); // List of facilities to be placed around San Diego area. _facilities = new List <Facility> { new Facility(new MapPoint(-1.3042129900625112E7, 3860127.9479775648, SpatialReferences.WebMercator)), new Facility(new MapPoint(-1.3042193400557665E7, 3862448.873041752, SpatialReferences.WebMercator)), new Facility(new MapPoint(-1.3046882875518233E7, 3862704.9896770366, SpatialReferences.WebMercator)), new Facility(new MapPoint(-1.3040539754780494E7, 3862924.5938606677, SpatialReferences.WebMercator)), new Facility(new MapPoint(-1.3042571225655518E7, 3858981.773018156, SpatialReferences.WebMercator)), new Facility(new MapPoint(-1.3039784633928463E7, 3856692.5980474586, SpatialReferences.WebMercator)), new Facility(new MapPoint(-1.3049023883956768E7, 3861993.789732541, SpatialReferences.WebMercator)) }; // Center the map on the San Diego facilities. Envelope fullExtent = GeometryEngine.CombineExtents(_facilities.Select(facility => facility.Geometry)); await _myMapView.SetViewpointGeometryAsync(fullExtent, 50); // Create a symbol for displaying facilities. _facilitySymbol = new PictureMarkerSymbol(new Uri("https://static.arcgis.com/images/Symbols/SafetyHealth/Hospital.png")) { Height = 30, Width = 30 }; // Incident symbol. _incidentSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbolStyle.Cross, Color.FromArgb(255, 0, 0, 0), 30); // Route to hospital symbol. _routeSymbol = new SimpleLineSymbol(SimpleLineSymbolStyle.Solid, Color.FromArgb(255, 0, 0, 255), 5.0f); // Create Graphics Overlays for incidents and facilities. _incidentGraphicsOverlay = new GraphicsOverlay(); _facilityGraphicsOverlay = new GraphicsOverlay(); // Create a graphic and add to graphics overlay for each facility. foreach (Facility facility in _facilities) { _facilityGraphicsOverlay.Graphics.Add(new Graphic(facility.Geometry, _facilitySymbol)); } // Add each graphics overlay to MyMapView. _myMapView.GraphicsOverlays.Add(_incidentGraphicsOverlay); _myMapView.GraphicsOverlays.Add(_facilityGraphicsOverlay); } catch (Exception e) { new UIAlertView("Error", e.ToString(), (IUIAlertViewDelegate)null, "OK", null).Show(); } }
private async void Initialize() { try { _myMapView.Map = new Map(Basemap.CreateTopographic()); // Create an overlay for visualizing tactical messages and add it to the map. _tacticalMessageOverlay = new GraphicsOverlay(); _myMapView.GraphicsOverlays.Add(_tacticalMessageOverlay); // Prevent graphics from showing up when zoomed too far out. _tacticalMessageOverlay.MinScale = 1000000; // Create a symbol dictionary following the mil2525d spec. string symbolFilePath = DataManager.GetDataFolder("e34835bf5ec5430da7cf16bb8c0b075c", "mil2525d.stylx"); DictionarySymbolStyle mil2525DStyle = await DictionarySymbolStyle.OpenAsync("mil2525d", symbolFilePath); // Use the dictionary symbol to render graphics in the overlay. _tacticalMessageOverlay.Renderer = new DictionaryRenderer(mil2525DStyle); // Load the military messages and render them. LoadMilitaryMessages(); // Get the extent of the graphics. Envelope graphicExtent = GeometryEngine.CombineExtents(_tacticalMessageOverlay.Graphics.Select(graphic => graphic.Geometry)); // Zoom to the extent of the graphics. await _myMapView.SetViewpointGeometryAsync(graphicExtent, 10); } catch (Exception e) { Console.WriteLine(e); new AlertDialog.Builder(this).SetMessage(e.ToString()).SetTitle("Error").Show(); } }
private async void ZoomToAreas() { // Calculate full extent of all areas. Envelope fullExtent = GeometryEngine.CombineExtents(MapAreas.Select(area => area.MapArea.AreaOfInterest)); // Zoom to the areas with a buffer. await _mapViewService.SetViewpointGeometryAsync(fullExtent, 20); }
private async void Initialize() { // Apply initial display settings UpdateDisplaySettings(); // Initialize the map with an oceans basemap MyMapView.Map = new Map(Basemap.CreateOceans()); // Get the path to the ENC Exchange Set string encPath = DataManager.GetDataFolder("9d2987a825c646468b3ce7512fb76e2d", "ExchangeSetwithoutUpdates", "ENC_ROOT", "CATALOG.031"); // Create the Exchange Set // Note: this constructor takes an array of paths because so that update sets can be loaded alongside base data EncExchangeSet myEncExchangeSet = new EncExchangeSet(new string[] { encPath }); // Wait for the exchange set to load await myEncExchangeSet.LoadAsync(); // Store a list of data set extent's - will be used to zoom the mapview to the full extent of the Exchange Set List <Envelope> dataSetExtents = new List <Envelope>(); // Add each data set as a layer foreach (EncDataset myEncDataSet in myEncExchangeSet.Datasets) { // Create the cell and layer EncLayer myEncLayer = new EncLayer(new EncCell(myEncDataSet)); // Add the layer to the map MyMapView.Map.OperationalLayers.Add(myEncLayer); // Wait for the layer to load await myEncLayer.LoadAsync(); // Add the extent to the list of extents dataSetExtents.Add(myEncLayer.FullExtent); } // Use the geometry engine to compute the full extent of the ENC Exchange Set Envelope fullExtent = GeometryEngine.CombineExtents(dataSetExtents); // Set the viewpoint MyMapView.SetViewpoint(new Viewpoint(fullExtent)); // Subscribe to notifications about leaving so that settings can be re-set this.Unloaded += SampleUnloaded; // Enable the setting change UI. DayRadioButton.Checked += Setting_Checked; DuskRadioButton.Checked += Setting_Checked; NightRadioButton.Checked += Setting_Checked; PaperPointRadioButton.Checked += Setting_Checked; SymbolizedAreaRadioButton.Checked += Setting_Checked; PlainAreaRadioButton.Checked += Setting_Checked; SimplifiedRadioButton.Checked += Setting_Checked; }
private async void Initialize() { // Subscribe to event notifications. _colorSchemeSegment.ValueChanged += ColorSchemeChanged; _areaSegment.ValueChanged += AreaStyleChanged; _pointSegment.ValueChanged += PointStyleChanged; // Initialize the map with an oceans basemap. _myMapView.Map = new Map(Basemap.CreateOceans()); // Get the path to the ENC Exchange Set. string encPath = DataManager.GetDataFolder("9d2987a825c646468b3ce7512fb76e2d", "ExchangeSetwithoutUpdates", "ENC_ROOT", "CATALOG.031"); // Create the Exchange Set. // Note: this constructor takes an array of paths because so that update sets can be loaded alongside base data. EncExchangeSet encExchangeSet = new EncExchangeSet(encPath); try { // Wait for the layer to load. await encExchangeSet.LoadAsync(); // Store a list of data set extent's - will be used to zoom the mapview to the full extent of the Exchange Set. List <Envelope> dataSetExtents = new List <Envelope>(); // Add each data set as a layer. foreach (EncDataset encDataSet in encExchangeSet.Datasets) { EncLayer encLayer = new EncLayer(new EncCell(encDataSet)); // Add the layer to the map. _myMapView.Map.OperationalLayers.Add(encLayer); // Wait for the layer to load. await encLayer.LoadAsync(); // Add the extent to the list of extents. dataSetExtents.Add(encLayer.FullExtent); } // Use the geometry engine to compute the full extent of the ENC Exchange Set. Envelope fullExtent = GeometryEngine.CombineExtents(dataSetExtents); // Set the viewpoint. _myMapView.SetViewpoint(new Viewpoint(fullExtent)); } catch (Exception e) { new UIAlertView("Error", e.ToString(), (IUIAlertViewDelegate)null, "OK", null).Show(); } }
private async void Initialize() { // Initialize the map with an oceans basemap. MyMapView.Map = new Map(Basemap.CreateOceans()); // Get the path to the ENC Exchange Set. string encPath = DataManager.GetDataFolder("9d2987a825c646468b3ce7512fb76e2d", "ExchangeSetwithoutUpdates", "ENC_ROOT", "CATALOG.031"); // Create the Exchange Set. // Note: this constructor takes an array of paths because so that update sets can be loaded alongside base data. EncExchangeSet myEncExchangeSet = new EncExchangeSet(encPath); try { // Wait for the exchange set to load. await myEncExchangeSet.LoadAsync(); // Store a list of data set extent's - will be used to zoom the mapview to the full extent of the Exchange Set. List <Envelope> dataSetExtents = new List <Envelope>(); // Add each data set as a layer. foreach (EncDataset myEncDataset in myEncExchangeSet.Datasets) { // Create the cell and layer. EncLayer myEncLayer = new EncLayer(new EncCell(myEncDataset)); // Add the layer to the map. MyMapView.Map.OperationalLayers.Add(myEncLayer); // Wait for the layer to load. await myEncLayer.LoadAsync(); // Add the extent to the list of extents. dataSetExtents.Add(myEncLayer.FullExtent); Console.WriteLine("Loop 1"); } // Use the geometry engine to compute the full extent of the ENC Exchange Set. Envelope fullExtent = GeometryEngine.CombineExtents(dataSetExtents); // Set the viewpoint. MyMapView.SetViewpoint(new Viewpoint(fullExtent)); // Subscribe to tap events (in order to use them to identify and select features). MyMapView.GeoViewTapped += MyMapView_GeoViewTapped; } catch (Exception e) { MessageBox.Show(e.ToString(), "Error"); } }
private async void Initialize() { // Initialize the map with an oceans basemap MyMapView.Map = new Map(BasemapStyle.ArcGISOceans); // Get the path to the ENC Exchange Set string encPath = DataManager.GetDataFolder("9d2987a825c646468b3ce7512fb76e2d", "ExchangeSetwithoutUpdates", "ENC_ROOT", "CATALOG.031"); // Create the Exchange Set // Note: this constructor takes an array of paths because so that update sets can be loaded alongside base data EncExchangeSet myEncExchangeSet = new EncExchangeSet(encPath); try { // Wait for the exchange set to load await myEncExchangeSet.LoadAsync(); // Store a list of data set extent's - will be used to zoom the mapview to the full extent of the Exchange Set List <Envelope> dataSetExtents = new List <Envelope>(); // Add each data set as a layer foreach (EncDataset myEncDataSet in myEncExchangeSet.Datasets) { EncLayer myEncLayer = new EncLayer(new EncCell(myEncDataSet)); // Add the layer to the map MyMapView.Map.OperationalLayers.Add(myEncLayer); // Wait for the layer to load await myEncLayer.LoadAsync(); // Add the extent to the list of extents dataSetExtents.Add(myEncLayer.FullExtent); } // Use the geometry engine to compute the full extent of the ENC Exchange Set Envelope fullExtent = GeometryEngine.CombineExtents(dataSetExtents); // Set the viewpoint await MyMapView.SetViewpointAsync(new Viewpoint(fullExtent)); } catch (Exception e) { await Application.Current.MainPage.DisplayAlert("Error", e.ToString(), "OK"); } }
private async void Initialize() { // Initialize the map with an oceans basemap. _myMapView.Map = new Map(Basemap.CreateOceans()); // Get the path to the ENC Exchange Set. string encPath = DataManager.GetDataFolder("9d2987a825c646468b3ce7512fb76e2d", "ExchangeSetwithoutUpdates", "ENC_ROOT", "CATALOG.031"); // Create the Exchange Set. // Note: this constructor takes an array of paths because so that update sets can be loaded alongside base data. EncExchangeSet encExchangeSet = new EncExchangeSet(encPath); // Wait for the layer to load. await encExchangeSet.LoadAsync(); // Store a list of data set extent's - will be used to zoom the mapview to the full extent of the Exchange Set. List <Envelope> dataSetExtents = new List <Envelope>(); // Add each data set as a layer. foreach (EncDataset encDataSet in encExchangeSet.Datasets) { EncLayer encLayer = new EncLayer(new EncCell(encDataSet)); // Add the layer to the map. _myMapView.Map.OperationalLayers.Add(encLayer); // Wait for the layer to load. await encLayer.LoadAsync(); // Add the extent to the list of extents. dataSetExtents.Add(encLayer.FullExtent); } // Use the geometry engine to compute the full extent of the ENC Exchange Set. Envelope fullExtent = GeometryEngine.CombineExtents(dataSetExtents); // Set the viewpoint. _myMapView.SetViewpoint(new Viewpoint(fullExtent)); }
public async override void OnNavigatedTo(NavigationContext navigationContext) { try { var webmapItem = navigationContext.Parameters["webmap"] as PortalItem; Map = new Map(webmapItem); await Map.LoadAsync(); Bookmarks.Add( new BookmarkModel("Initial viewpoint", Map.InitialViewpoint, BookmarkModel.BookmarkSource.InitialViewpoint)); Envelope fullExtent = null; foreach (var layer in Map.AllLayers) { await layer.LoadAsync(); if (fullExtent == null) { fullExtent = layer.FullExtent; } else { fullExtent = GeometryEngine.CombineExtents(fullExtent, layer.FullExtent); } } Bookmarks.Add(new BookmarkModel("Full extent", new Viewpoint(fullExtent), BookmarkModel.BookmarkSource.FullExtent)); foreach (var bookmark in Map.Bookmarks) { Bookmarks.Add(new BookmarkModel(bookmark)); } } catch (Exception ex) { throw; } }
private async void Initialize() { try { // Construct the map and set the MapView.Map property. _myMapView.Map = new Map(Basemap.CreateLightGrayCanvasVector()); // Add a graphics overlay to MyMapView. (Will be used later to display routes) _myMapView.GraphicsOverlays.Add(new GraphicsOverlay()); // Create a ClosestFacilityTask using the San Diego Uri. _task = await ClosestFacilityTask.CreateAsync(_closestFacilityUri); // Create a symbol for displaying facilities. PictureMarkerSymbol facilitySymbol = new PictureMarkerSymbol(new Uri("http://static.arcgis.com/images/Symbols/SafetyHealth/FireStation.png")) { Height = 30, Width = 30 }; // Incident symbol. PictureMarkerSymbol incidentSymbol = new PictureMarkerSymbol(new Uri("http://static.arcgis.com/images/Symbols/SafetyHealth/esriCrimeMarker_56_Gradient.png")) { Height = 30, Width = 30 }; // Create a list of line symbols to show unique routes. Different colors help make different routes visually distinguishable. _routeSymbols = new List <SimpleLineSymbol>() { new SimpleLineSymbol(SimpleLineSymbolStyle.Solid, Color.FromArgb(125, 25, 45, 85), 5.0f), new SimpleLineSymbol(SimpleLineSymbolStyle.Solid, Color.FromArgb(125, 35, 65, 120), 5.0f), new SimpleLineSymbol(SimpleLineSymbolStyle.Solid, Color.FromArgb(125, 55, 100, 190), 5.0f), new SimpleLineSymbol(SimpleLineSymbolStyle.Solid, Color.FromArgb(125, 75, 140, 255), 5.0f) }; // Create a table for facilities using the FeatureServer. _facilityTable = new ServiceFeatureTable(_facilityUri); // Create a feature layer from the table. _facilityLayer = new FeatureLayer(_facilityTable) { Renderer = new SimpleRenderer(facilitySymbol) }; // Create a table for facilities using the FeatureServer. _incidentTable = new ServiceFeatureTable(_incidentUri); // Create a feature layer from the table. _incidentLayer = new FeatureLayer(_incidentTable) { Renderer = new SimpleRenderer(incidentSymbol) }; // Add the layers to the map. _myMapView.Map.OperationalLayers.Add(_facilityLayer); _myMapView.Map.OperationalLayers.Add(_incidentLayer); // Wait for both layers to load. await _facilityLayer.LoadAsync(); await _incidentLayer.LoadAsync(); // Zoom to the combined extent of both layers. Envelope fullExtent = GeometryEngine.CombineExtents(_facilityLayer.FullExtent, _incidentLayer.FullExtent); await _myMapView.SetViewpointGeometryAsync(fullExtent, 50); // Enable the solve button. _solveRoutesButton.Enabled = true; } catch (Exception exception) { CreateErrorDialog("An exception has occurred.\n" + exception.Message); } }
private async void Initialize() { // Add display options to UI ColorSchemePicker.ItemsSource = new List <String>() { "Day", "Dusk", "Night" }; AreaPicker.ItemsSource = new List <String>() { "Plain", "Symbolized" }; PointPicker.ItemsSource = new List <String>() { "Paper Chart", "Simplified" }; // Provide initial selection ColorSchemePicker.SelectedIndex = 0; AreaPicker.SelectedIndex = 0; PointPicker.SelectedIndex = 0; // Apply initial display settings UpdateDisplaySettings(); // Initialize the map with an oceans basemap MyMapView.Map = new Map(BasemapStyle.ArcGISOceans); // Get the path to the ENC Exchange Set string encPath = DataManager.GetDataFolder("9d2987a825c646468b3ce7512fb76e2d", "ExchangeSetwithoutUpdates", "ENC_ROOT", "CATALOG.031"); // Create the Exchange Set // Note: this constructor takes an array of paths because so that update sets can be loaded alongside base data EncExchangeSet myEncExchangeSet = new EncExchangeSet(new string[] { encPath }); try { // Wait for the exchange set to load await myEncExchangeSet.LoadAsync(); // Store a list of data set extent's - will be used to zoom the mapview to the full extent of the Exchange Set List <Envelope> dataSetExtents = new List <Envelope>(); // Add each data set as a layer foreach (EncDataset myEncDataSet in myEncExchangeSet.Datasets) { EncLayer myEncLayer = new EncLayer(new EncCell(myEncDataSet)); // Add the layer to the map MyMapView.Map.OperationalLayers.Add(myEncLayer); // Wait for the layer to load await myEncLayer.LoadAsync(); // Add the extent to the list of extents dataSetExtents.Add(myEncLayer.FullExtent); } // Use the geometry engine to compute the full extent of the ENC Exchange Set Envelope fullExtent = GeometryEngine.CombineExtents(dataSetExtents); // Set the viewpoint await MyMapView.SetViewpointAsync(new Viewpoint(fullExtent)); // Subscribe to notifications about leaving so that settings can be reset. // This looks different because of sample viewer plumbing. // Replace `((ArcGISRuntime.SamplePage)this.Parent)` with `this` in your app. ((Page)this.Parent).Disappearing += SampleUnloaded; } catch (Exception e) { await Application.Current.MainPage.DisplayAlert("Error", e.ToString(), "OK"); } }