private async void Initialize() { try { // Create the utility network. _utilityNetwork = await UtilityNetwork.CreateAsync(new Uri(FeatureServerUrl)); // Create the map. MyMapView.Map = new Map(Basemap.CreateTopographicVector()); // Get all of the edges and junctions in the network. IEnumerable <UtilityNetworkSource> edges = _utilityNetwork.Definition.NetworkSources.Where(n => n.SourceType == UtilityNetworkSourceType.Edge); IEnumerable <UtilityNetworkSource> junctions = _utilityNetwork.Definition.NetworkSources.Where(n => n.SourceType == UtilityNetworkSourceType.Junction); // Add all edges that are not subnet lines to the map. foreach (UtilityNetworkSource source in edges) { if (source.SourceUsageType != UtilityNetworkSourceUsageType.SubnetLine && source.FeatureTable != null) { MyMapView.Map.OperationalLayers.Add(new FeatureLayer(source.FeatureTable)); } } // Add all junctions to the map. foreach (UtilityNetworkSource source in junctions) { if (source.FeatureTable != null) { MyMapView.Map.OperationalLayers.Add(new FeatureLayer(source.FeatureTable)); } } // Create a graphics overlay for associations. _associationsOverlay = new GraphicsOverlay(); MyMapView.GraphicsOverlays.Add(_associationsOverlay); // Symbols for the associations. Symbol attachmentSymbol = new SimpleLineSymbol(SimpleLineSymbolStyle.Dot, Color.Green, 5d); Symbol connectivitySymbol = new SimpleLineSymbol(SimpleLineSymbolStyle.Dot, Color.Red, 5d); // Create a renderer for the associations. var attachmentValue = new UniqueValue("Attachment", string.Empty, attachmentSymbol, UtilityAssociationType.Attachment.ToString()); var connectivityValue = new UniqueValue("Connectivity", string.Empty, connectivitySymbol, UtilityAssociationType.Connectivity.ToString()); _associationsOverlay.Renderer = new UniqueValueRenderer(new List <string> { "AssociationType" }, new List <UniqueValue> { attachmentValue, connectivityValue }, string.Empty, null); // Populate the legend in the UI. RuntimeImage attachmentSwatch = await attachmentSymbol.CreateSwatchAsync(); AttachmentImage.Source = await Esri.ArcGISRuntime.Xamarin.Forms.RuntimeImageExtensions.ToImageSourceAsync(attachmentSwatch); RuntimeImage connectSwatch = await connectivitySymbol.CreateSwatchAsync(); ConnectivityImage.Source = await Esri.ArcGISRuntime.Xamarin.Forms.RuntimeImageExtensions.ToImageSourceAsync(connectSwatch); // Set the starting viewpoint. await MyMapView.SetViewpointAsync(InitialViewpoint); // Add the associations in the starting viewpoint. AddAssociations(); } catch (Exception ex) { await Application.Current.MainPage.DisplayAlert(ex.GetType().Name, ex.Message, "OK"); } }
private void Initialize() { // Create the scene with the imagery basemap. _mySceneView.Scene = new Scene(Basemap.CreateImagery()); // Add the surface elevation. Surface mySurface = new Surface(); mySurface.ElevationSources.Add(new ArcGISTiledElevationSource(_localElevationImageService)); _mySceneView.Scene.BaseSurface = mySurface; // Add the scene layer. ArcGISSceneLayer sceneLayer = new ArcGISSceneLayer(_buildingsUrl); _mySceneView.Scene.OperationalLayers.Add(sceneLayer); // Create the MapPoint representing the initial location. MapPoint initialLocation = new MapPoint(-4.5, 48.4, 56.0); // Create the location viewshed analysis. _viewshed = new LocationViewshed( initialLocation, 0, 60, 75, 90, 11, 1500); _settingsVC = new ViewshedLocationSettingsController(_viewshed); _settingsButton.Enabled = true; // Create a camera based on the initial location. Camera camera = new Camera(initialLocation, 200.0, 20.0, 70.0, 0.0); // Apply the camera to the scene view. _mySceneView.SetViewpointCamera(camera); // Create an analysis overlay for showing the viewshed analysis. _analysisOverlay = new AnalysisOverlay(); // Add the viewshed analysis to the overlay. _analysisOverlay.Analyses.Add(_viewshed); // Create a symbol for the viewpoint. _viewpointSymbol = SimpleMarkerSceneSymbol.CreateSphere(Color.Blue, 10, SceneSymbolAnchorPosition.Center); // Add the symbol to the viewpoint overlay. _viewpointOverlay = new GraphicsOverlay { SceneProperties = new LayerSceneProperties(SurfacePlacement.Absolute) }; _viewpointOverlay.Graphics.Add(new Graphic(initialLocation, _viewpointSymbol)); // Add the analysis overlay to the SceneView. _mySceneView.AnalysisOverlays.Add(_analysisOverlay); // Add the graphics overlay _mySceneView.GraphicsOverlays.Add(_viewpointOverlay); // Update the frustum outline color. // The frustum outline shows the volume in which the viewshed analysis is performed. Viewshed.FrustumOutlineColor = Color.Blue; }
private async void Initialize() { // Create a tile cache and load it with the SanFrancisco streets tpk. TileCache tileCache = new TileCache(DataManager.GetDataFolder("e4a398afe9a945f3b0f4dca1e4faccb5", "SanFrancisco.tpkx")); // Create the corresponding layer based on the tile cache. ArcGISTiledLayer tileLayer = new ArcGISTiledLayer(tileCache); // Create the basemap based on the tile cache. Basemap sfBasemap = new Basemap(tileLayer); // Create the map with the tile-based basemap. Map myMap = new Map(sfBasemap); // Assign the map to the MapView. MyMapView.Map = myMap; // Create a new symbol for the extent graphic. SimpleLineSymbol lineSymbol = new SimpleLineSymbol(SimpleLineSymbolStyle.Solid, Color.Red, 2); // Create graphics overlay for the extent graphic and apply a renderer. GraphicsOverlay extentOverlay = new GraphicsOverlay { Renderer = new SimpleRenderer(lineSymbol) }; // Add graphics overlay to the map view. MyMapView.GraphicsOverlays.Add(extentOverlay); // Set up an event handler for when the viewpoint (extent) changes. MyMapView.ViewpointChanged += MapViewExtentChanged; try { // Create a task for generating a geodatabase (GeodatabaseSyncTask). _gdbSyncTask = await GeodatabaseSyncTask.CreateAsync(_featureServiceUri); // Add all layers from the service to the map. foreach (IdInfo layer in _gdbSyncTask.ServiceInfo.LayerInfos) { // Get the URL for this particular layer. Uri onlineTableUri = new Uri(_featureServiceUri + "/" + layer.Id); // Create the ServiceFeatureTable. ServiceFeatureTable onlineTable = new ServiceFeatureTable(onlineTableUri); // Wait for the table to load. await onlineTable.LoadAsync(); // Skip tables that aren't for point features.{ if (onlineTable.GeometryType != GeometryType.Point) { continue; } // Add the layer to the map's operational layers if load succeeds. if (onlineTable.LoadStatus == LoadStatus.Loaded) { myMap.OperationalLayers.Add(new FeatureLayer(onlineTable)); } } // Update the extent graphic so that it is valid before user interaction. UpdateMapExtent(); // Enable the generate button now that the sample is ready. GenerateButton.IsEnabled = true; } catch (Exception e) { ShowStatusMessage(e.ToString()); } }
private void ShowBasemapList() { // Create a new Alert Controller. UIAlertController basemapsActionSheet = UIAlertController.Create("Basemaps", "Choose a basemap", UIAlertControllerStyle.ActionSheet); // Add actions to apply each basemap type. basemapsActionSheet.AddAction(UIAlertAction.Create("Topographic", UIAlertActionStyle.Default, action => _myMapView.Map.Basemap = Basemap.CreateTopographic())); basemapsActionSheet.AddAction(UIAlertAction.Create("Streets", UIAlertActionStyle.Default, action => _myMapView.Map.Basemap = Basemap.CreateStreets())); basemapsActionSheet.AddAction(UIAlertAction.Create("Imagery", UIAlertActionStyle.Default, action => _myMapView.Map.Basemap = Basemap.CreateImagery())); basemapsActionSheet.AddAction(UIAlertAction.Create("Oceans", UIAlertActionStyle.Default, action => _myMapView.Map.Basemap = Basemap.CreateOceans())); basemapsActionSheet.AddAction(UIAlertAction.Create("Cancel", UIAlertActionStyle.Cancel, action => Console.WriteLine("Canceled"))); // Required for iPad - You must specify a source for the Action Sheet since it is displayed as a popover. UIPopoverPresentationController presentationPopover = basemapsActionSheet.PopoverPresentationController; if (presentationPopover != null) { presentationPopover.SourceView = View; presentationPopover.PermittedArrowDirections = UIPopoverArrowDirection.Up; } // Display the list of basemaps. PresentViewController(basemapsActionSheet, true, null); }
private async void Initialize() { try { // Get the paths to resources used by the sample. string basemapTilePath = DataManager.GetDataFolder("567e14f3420d40c5a206e5c0284cf8fc", "streetmap_SD.tpk"); string networkGeodatabasePath = DataManager.GetDataFolder("567e14f3420d40c5a206e5c0284cf8fc", "sandiego.geodatabase"); // Create the tile cache representing the offline basemap. TileCache tiledBasemapCache = new TileCache(basemapTilePath); // Create a tiled layer to display the offline tiles. ArcGISTiledLayer offlineTiledLayer = new ArcGISTiledLayer(tiledBasemapCache); // Create a basemap based on the tile layer. Basemap offlineBasemap = new Basemap(offlineTiledLayer); // Create a new map with the offline basemap. Map theMap = new Map(offlineBasemap); // Set the initial viewpoint to show the routable area. theMap.InitialViewpoint = new Viewpoint(_routableArea); // Show the map in the map view. _myMapView.Map = theMap; // Create overlays for displaying the stops and the calculated route. _stopsOverlay = new GraphicsOverlay(); _routeOverlay = new GraphicsOverlay(); // Create a symbol and renderer for symbolizing the calculated route. SimpleLineSymbol routeSymbol = new SimpleLineSymbol(SimpleLineSymbolStyle.Solid, Color.Blue, 2); _routeOverlay.Renderer = new SimpleRenderer(routeSymbol); // Add the stops and route overlays to the map. _myMapView.GraphicsOverlays.Add(_stopsOverlay); _myMapView.GraphicsOverlays.Add(_routeOverlay); // Create the route task, referring to the offline geodatabase with the street network. _offlineRouteTask = await RouteTask.CreateAsync(networkGeodatabasePath, "Streets_ND"); // Get the list of available travel modes. _availableTravelModes = _offlineRouteTask.RouteTaskInfo.TravelModes.ToList(); // Update the UI with the travel modes list. ArrayAdapter <string> spinnerListAdapter = new ArrayAdapter <string>(this, Android.Resource.Layout.SimpleSpinnerItem, _availableTravelModes.Select(travelMode => travelMode.Name).ToArray()); _travelModeSpinner.Adapter = spinnerListAdapter; _travelModeSpinner.SetSelection(0); // Create the default parameters. _offlineRouteParameters = await _offlineRouteTask.CreateDefaultParametersAsync(); // Display the extent of the road network on the map. DisplayBoundaryMarker(); // Now that the sample is ready, hook up the tapped and hover events. _myMapView.GeoViewTapped += MapView_Tapped; _travelModeSpinner.ItemSelected += TravelMode_SelectionChanged; } catch (Exception e) { System.Diagnostics.Debug.WriteLine(e); ShowMessage("Couldn't start sample", "There was a problem starting the sample. See debug output for details."); } }
private void Initialize() { // Create a scene with elevation. Surface sceneSurface = new Surface(); sceneSurface.ElevationSources.Add(new ArcGISTiledElevationSource(_worldElevationService)); Scene myScene = new Scene(Basemap.CreateImagery()) { BaseSurface = sceneSurface }; // Create and add a building layer. ArcGISSceneLayer buildingsLayer = new ArcGISSceneLayer(_buildingService); myScene.OperationalLayers.Add(buildingsLayer); // Create and add an analysis overlay. AnalysisOverlay measureAnalysisOverlay = new AnalysisOverlay(); MySceneView.AnalysisOverlays.Add(measureAnalysisOverlay); // Create an initial distance measurement and show it. MapPoint start = new MapPoint(-4.494677, 48.384472, 24.772694, SpatialReferences.Wgs84); MapPoint end = new MapPoint(-4.495646, 48.384377, 58.501115, SpatialReferences.Wgs84); _distanceMeasurement = new LocationDistanceMeasurement(start, end); measureAnalysisOverlay.Analyses.Add(_distanceMeasurement); // Keep the UI updated. _distanceMeasurement.MeasurementChanged += (o, e) => { // This is needed because measurement change events occur on a non-UI thread and this code accesses UI object. Device.BeginInvokeOnMainThread(() => { // Update the labels with new values in the format {value} {unit system}. DirectMeasureLabel.Text = $"{_distanceMeasurement.DirectDistance.Value:F} {_distanceMeasurement.DirectDistance.Unit.Abbreviation}"; VerticalMeasureLabel.Text = $"{_distanceMeasurement.VerticalDistance.Value:F} {_distanceMeasurement.VerticalDistance.Unit.Abbreviation}"; HorizontalMeasureLabel.Text = $"{_distanceMeasurement.HorizontalDistance.Value:F} {_distanceMeasurement.HorizontalDistance.Unit.Abbreviation}"; }); }; // Configure the unit system selection box. UnitSystemCombo.ItemsSource = Enum.GetValues(typeof(UnitSystem)); UnitSystemCombo.SelectedItem = _distanceMeasurement.UnitSystem; // Update the unit system selection. UnitSystemCombo.SelectedIndexChanged += (sender, args) => { _distanceMeasurement.UnitSystem = (UnitSystem)UnitSystemCombo.SelectedItem; }; // Show the scene in the view. MySceneView.Scene = myScene; MySceneView.SetViewpointCamera(new Camera(start, 200, 0, 45, 0)); // Subscribe to tap events to enable updating the measurement. MySceneView.GeoViewTapped += MySceneView_GeoViewTapped; }
private void Initialize() { // Create new Scene Scene myScene = new Scene(); // Set Scene's base map property myScene.Basemap = Basemap.CreateImagery(); // Create a camera with coordinates showing layer data Camera camera = new Camera(53.04, -4.04, 1300, 0, 90.0, 0); // Assign the Scene to the SceneView MySceneView.Scene = myScene; // Create ElevationSource from elevation data Uri ArcGISTiledElevationSource elevationSource = new ArcGISTiledElevationSource( new Uri("http://elevation3d.arcgis.com/arcgis/rest/services/WorldElevation3D/Terrain3D/ImageServer")); // Add elevationSource to BaseSurface's ElevationSources MySceneView.Scene.BaseSurface.ElevationSources.Add(elevationSource); // Set view point of scene view using camera MySceneView.SetViewpointCameraAsync(camera); // Create overlays with elevation modes GraphicsOverlay drapedOverlay = new GraphicsOverlay(); drapedOverlay.SceneProperties.SurfacePlacement = SurfacePlacement.Draped; MySceneView.GraphicsOverlays.Add(drapedOverlay); GraphicsOverlay relativeOverlay = new GraphicsOverlay(); relativeOverlay.SceneProperties.SurfacePlacement = SurfacePlacement.Relative; MySceneView.GraphicsOverlays.Add(relativeOverlay); GraphicsOverlay absoluteOverlay = new GraphicsOverlay(); absoluteOverlay.SceneProperties.SurfacePlacement = SurfacePlacement.Absolute; MySceneView.GraphicsOverlays.Add(absoluteOverlay); // Create point for graphic location MapPoint point = new MapPoint(-4.04, 53.06, 1000, camera.Location.SpatialReference); // Create a red circle symbol SimpleMarkerSymbol circleSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbolStyle.Circle, Color.FromArgb(255, 255, 0, 0), 10); // Create a text symbol for each elevation mode TextSymbol drapedText = new TextSymbol("DRAPED", Color.FromArgb(255, 255, 255, 255), 10, Esri.ArcGISRuntime.Symbology.HorizontalAlignment.Left, Esri.ArcGISRuntime.Symbology.VerticalAlignment.Middle); TextSymbol relativeText = new TextSymbol("RELATIVE", Color.FromArgb(255, 255, 255, 255), 10, Esri.ArcGISRuntime.Symbology.HorizontalAlignment.Left, Esri.ArcGISRuntime.Symbology.VerticalAlignment.Middle); TextSymbol absoluteText = new TextSymbol("ABSOLUTE", Color.FromArgb(255, 255, 255, 255), 10, Esri.ArcGISRuntime.Symbology.HorizontalAlignment.Left, Esri.ArcGISRuntime.Symbology.VerticalAlignment.Middle); // Add the point graphic and text graphic to the corresponding graphics overlay drapedOverlay.Graphics.Add(new Graphic(point, circleSymbol)); drapedOverlay.Graphics.Add(new Graphic(point, drapedText)); relativeOverlay.Graphics.Add(new Graphic(point, circleSymbol)); relativeOverlay.Graphics.Add(new Graphic(point, relativeText)); absoluteOverlay.Graphics.Add(new Graphic(point, circleSymbol)); absoluteOverlay.Graphics.Add(new Graphic(point, absoluteText)); }
private async void Initialize() { // Apply appropriate maps to the scene and the inset map view InsetMapView.Map = new Map(Basemap.CreateImagery()); MySceneView.Scene = new Scene(Basemap.CreateImagery()); // Update the mission selection UI MissionSelectionBox.ItemsSource = _missionToItemId.Keys; MissionSelectionBox.SelectedIndex = 0; // Wire up the selection change event to call the ChangeMission method; this method resets the animation and starts a new mission MissionSelectionBox.SelectionChanged += async(sender, args) => { await ChangeMission(args.AddedItems[0].ToString()); }; // Apply the elevation source Surface surface = new Surface(); ElevationSource elevationSource = new ArcGISTiledElevationSource(_elevationServiceUrl); surface.ElevationSources.Add(elevationSource); MySceneView.Scene.BaseSurface = surface; // Create and add the graphics overlay GraphicsOverlay sceneOverlay = new GraphicsOverlay { SceneProperties = { SurfacePlacement = SurfacePlacement.Absolute } }; MySceneView.GraphicsOverlays.Add(sceneOverlay); // Create a renderer to handle updating plane's orientation SimpleRenderer renderer3D = new SimpleRenderer(); RendererSceneProperties renderProperties = renderer3D.SceneProperties; // Use expressions to keep the renderer properties updated as parameters of the rendered object renderProperties.HeadingExpression = "[HEADING]"; renderProperties.PitchExpression = "[PITCH]"; renderProperties.RollExpression = "[ROLL]"; // Apply the renderer to the scene view's overlay sceneOverlay.Renderer = renderer3D; // Create renderer to symbolize plane and update plane orientation in the inset map SimpleRenderer renderer2D = new SimpleRenderer(); // Create the symbol that will be used for the plane SimpleMarkerSymbol plane2DSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbolStyle.Triangle, System.Drawing.Color.Blue, 10); // Apply the symbol to the renderer renderer2D.Symbol = plane2DSymbol; // Apply a rotation expression to the renderer renderer2D.RotationExpression = "[ANGLE]"; // Update the inset map with a new GraphicsOverlay based on the renderer GraphicsOverlay insetMapOverlay = new GraphicsOverlay { Renderer = renderer2D }; InsetMapView.GraphicsOverlays.Add(insetMapOverlay); // Create placeholder graphic for showing the mission route in the inset map SimpleLineSymbol routeSymbol = new SimpleLineSymbol(SimpleLineSymbolStyle.Solid, System.Drawing.Color.Red, 2); _routeGraphic = new Graphic { Symbol = routeSymbol }; insetMapOverlay.Graphics.Add(_routeGraphic); // Create the plane graphic; this is symbolized as a blue triangle because of renderer implemented above // Create the attribute dictionary Dictionary <string, object> plane2DAttributes = new Dictionary <string, object>(); // Set the angle for the plane graphic plane2DAttributes["ANGLE"] = 0f; // Create the graphic from the attributes and the initial point _plane2D = new Graphic(new MapPoint(0, 0, SpatialReferences.Wgs84), plane2DAttributes); // Add the plane graphic to the inset map via the overlay insetMapOverlay.Graphics.Add(_plane2D); try { // Create the model graphic for the plane // Get the path to the 3D model string modelPath = GetModelPath(); // Create the scene symbol from the path to the model ModelSceneSymbol plane3DSymbol = await ModelSceneSymbol.CreateAsync(new Uri(modelPath), 1.0); // Create the graphic with an initial location and the plane symbol _plane3D = new Graphic(new MapPoint(0, 0, 0, SpatialReferences.Wgs84), plane3DSymbol); // Add the plane to the overlay sceneOverlay.Graphics.Add(_plane3D); // Create the orbit camera controller to follow the plane _orbitCameraController = new OrbitGeoElementCameraController(_plane3D, 20.0) { CameraPitchOffset = 75.0 }; MySceneView.CameraController = _orbitCameraController; // Create a timer; this will enable animating the plane _animationTimer = new DispatcherTimer() { // This is the duration of the timer in milliseconds. This controls the animation speed (fps) Interval = new TimeSpan(0, 0, 0, 0, 60) }; _animationTimer.Tick += AnimatePlane; // Set the initial mission for when the sample loads await ChangeMission(_missionToItemId.Keys.First()); } catch (Exception e) { await new MessageDialog(e.ToString(), "Error").ShowAsync(); } }
private async void Initialize() { // Create a map with a streets basemap. Map map = new Map(Basemap.CreateStreets()); // Get the file name for the local raster dataset. string filepath = GetRasterPath(); // Load the raster file Raster rasterFile = new Raster(filepath); // Create a new raster layer to show the image. _rasterLayer = new RasterLayer(rasterFile); try { // Once the layer is loaded, enable the button to apply a new renderer. await _rasterLayer.LoadAsync(); ApplyRgbRendererButton.IsEnabled = true; // Create a viewpoint with the raster's full extent. Viewpoint fullRasterExtent = new Viewpoint(_rasterLayer.FullExtent); // Set the initial viewpoint for the map. map.InitialViewpoint = fullRasterExtent; // Add the layer to the map. map.OperationalLayers.Add(_rasterLayer); // Add the map to the map view. MyMapView.Map = map; // Add available stretch types to the combo box. StretchTypeComboBox.Items.Add("Min Max"); StretchTypeComboBox.Items.Add("Percent Clip"); StretchTypeComboBox.Items.Add("Standard Deviation"); // Select "Min Max" as the stretch type. StretchTypeComboBox.SelectedIndex = 0; // Create a range of values from 0-255. List <int> minMaxValues = Enumerable.Range(0, 256).ToList(); // Fill the min and max red combo boxes with the range and set default values. MinRedComboBox.ItemsSource = minMaxValues; MinRedComboBox.SelectedValue = 0; MaxRedComboBox.ItemsSource = minMaxValues; MaxRedComboBox.SelectedValue = 255; // Fill the min and max green combo boxes with the range and set default values. MinGreenComboBox.ItemsSource = minMaxValues; MinGreenComboBox.SelectedValue = 0; MaxGreenComboBox.ItemsSource = minMaxValues; MaxGreenComboBox.SelectedValue = 255; // Fill the min and max blue combo boxes with the range and set default values. MinBlueComboBox.ItemsSource = minMaxValues; MinBlueComboBox.SelectedValue = 0; MaxBlueComboBox.ItemsSource = minMaxValues; MaxBlueComboBox.SelectedValue = 255; // Fill the standard deviation factor combo box and set a default value. IEnumerable <int> wholeStdDevs = Enumerable.Range(1, 10); List <double> halfStdDevs = wholeStdDevs.Select(i => (double)i / 2).ToList(); StdDeviationFactorComboBox.ItemsSource = halfStdDevs; StdDeviationFactorComboBox.SelectedValue = 2.0; } catch (Exception e) { MessageBox.Show(e.ToString(), "Error"); } }
private void Initialize() { // Create new Scene Scene myScene = new Scene { // Set Scene's base map property Basemap = Basemap.CreateImagery() }; // Create a camera with coordinates showing layer data Camera camera = new Camera(53.05, -4.01, 1115, 299, 88, 0); // Assign the Scene to the SceneView _mySceneView.Scene = myScene; // Create ElevationSource from elevation data Uri ArcGISTiledElevationSource elevationSource = new ArcGISTiledElevationSource( new Uri("https://elevation3d.arcgis.com/arcgis/rest/services/WorldElevation3D/Terrain3D/ImageServer")); // Add elevationSource to BaseSurface's ElevationSources _mySceneView.Scene.BaseSurface.ElevationSources.Add(elevationSource); // Set view point of scene view using camera _mySceneView.SetViewpointCameraAsync(camera); // Create overlays with elevation modes _drapedBillboardedOverlay = new GraphicsOverlay(); _drapedBillboardedOverlay.SceneProperties.SurfacePlacement = SurfacePlacement.DrapedBillboarded; _mySceneView.GraphicsOverlays.Add(_drapedBillboardedOverlay); _drapedFlatOverlay = new GraphicsOverlay(); _drapedFlatOverlay.SceneProperties.SurfacePlacement = SurfacePlacement.DrapedFlat; GraphicsOverlay relativeOverlay = new GraphicsOverlay(); relativeOverlay.SceneProperties.SurfacePlacement = SurfacePlacement.Relative; _mySceneView.GraphicsOverlays.Add(relativeOverlay); GraphicsOverlay absoluteOverlay = new GraphicsOverlay(); absoluteOverlay.SceneProperties.SurfacePlacement = SurfacePlacement.Absolute; _mySceneView.GraphicsOverlays.Add(absoluteOverlay); // Create point for graphic location MapPoint point = new MapPoint(-4.04, 53.06, 1000, camera.Location.SpatialReference); // Create a red triangle symbol SimpleMarkerSymbol triangleSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbolStyle.Triangle, Color.FromArgb(255, 255, 0, 0), 10); // Create a text symbol for each elevation mode TextSymbol drapedBillboardedText = new TextSymbol("DRAPED BILLBOARDED", Color.FromArgb(255, 255, 255, 255), 10, HorizontalAlignment.Center, VerticalAlignment.Middle); drapedBillboardedText.OffsetY += 20; TextSymbol drapedFlatText = new TextSymbol("DRAPED FLAT", Color.FromArgb(255, 255, 255, 255), 10, HorizontalAlignment.Center, VerticalAlignment.Middle); drapedFlatText.OffsetY += 20; TextSymbol relativeText = new TextSymbol("RELATIVE", Color.FromArgb(255, 255, 255, 255), 10, HorizontalAlignment.Center, VerticalAlignment.Middle); relativeText.OffsetY += 20; TextSymbol absoluteText = new TextSymbol("ABSOLUTE", Color.FromArgb(255, 255, 255, 255), 10, HorizontalAlignment.Center, VerticalAlignment.Middle); absoluteText.OffsetY += 20; // Add the point graphic and text graphic to the corresponding graphics overlay _drapedBillboardedOverlay.Graphics.Add(new Graphic(point, triangleSymbol)); _drapedBillboardedOverlay.Graphics.Add(new Graphic(point, drapedBillboardedText)); _drapedFlatOverlay.Graphics.Add(new Graphic(point, triangleSymbol)); _drapedFlatOverlay.Graphics.Add(new Graphic(point, drapedFlatText)); relativeOverlay.Graphics.Add(new Graphic(point, triangleSymbol)); relativeOverlay.Graphics.Add(new Graphic(point, relativeText)); absoluteOverlay.Graphics.Add(new Graphic(point, triangleSymbol)); absoluteOverlay.Graphics.Add(new Graphic(point, absoluteText)); }
private void Initialize() { // Show a streets basemap. _myMapView.Map = new Map(Basemap.CreateStreets()); }
private void NewMapClicked(object sender, EventArgs e) { // Clear the map from the map view (allow the user to start over and save as a new portal item). _myMapView.Map = new Map(Basemap.CreateLightGrayCanvas()); }
private async void Initialize() { try { // Disable the UI. FilterOptions.Visibility = Visibility.Collapsed; // Create and load the utility network. _utilityNetwork = await UtilityNetwork.CreateAsync(new Uri(FeatureServiceUrl)); // Create a map with layers in this utility network. MyMapView.Map = new Map(Basemap.CreateStreetsNightVector()); MyMapView.Map.OperationalLayers.Add(new FeatureLayer(new Uri($"{FeatureServiceUrl}/{LineLayerId}"))); MyMapView.Map.OperationalLayers.Add(new FeatureLayer(new Uri($"{FeatureServiceUrl}/{DeviceLayerId}"))); // Get a trace configuration from a tier. UtilityDomainNetwork domainNetwork = _utilityNetwork.Definition.GetDomainNetwork(DomainNetworkName) ?? throw new ArgumentException(DomainNetworkName); UtilityTier tier = domainNetwork.GetTier(TierName) ?? throw new ArgumentException(TierName); _configuration = tier.TraceConfiguration; // Create a trace filter. _configuration.Filter = new UtilityTraceFilter(); // Get a default starting location. UtilityNetworkSource networkSource = _utilityNetwork.Definition.GetNetworkSource(NetworkSourceName) ?? throw new ArgumentException(NetworkSourceName); UtilityAssetGroup assetGroup = networkSource.GetAssetGroup(AssetGroupName) ?? throw new ArgumentException(AssetGroupName); UtilityAssetType assetType = assetGroup.GetAssetType(AssetTypeName) ?? throw new ArgumentException(AssetTypeName); Guid globalId = Guid.Parse(GlobalId); _startingLocation = _utilityNetwork.CreateElement(assetType, globalId); // Create a graphics overlay. GraphicsOverlay overlay = new GraphicsOverlay(); MyMapView.GraphicsOverlays.Add(overlay); // Display starting location. IEnumerable <ArcGISFeature> elementFeatures = await _utilityNetwork.GetFeaturesForElementsAsync(new List <UtilityElement> { _startingLocation }); MapPoint startingLocationGeometry = elementFeatures.FirstOrDefault().Geometry as MapPoint; Symbol symbol = new SimpleMarkerSymbol(SimpleMarkerSymbolStyle.Cross, System.Drawing.Color.LimeGreen, 25d); Graphic graphic = new Graphic(startingLocationGeometry, symbol); overlay.Graphics.Add(graphic); // Set the starting viewpoint. await MyMapView.SetViewpointAsync(new Viewpoint(startingLocationGeometry, 3000)); // Build the choice list for categories populated with the `Name` property of each `UtilityCategory` in the `UtilityNetworkDefinition`. Categories.ItemsSource = _utilityNetwork.Definition.Categories; Categories.SelectedItem = _utilityNetwork.Definition.Categories.First(); // Enable the UI. FilterOptions.Visibility = Visibility.Visible; } catch (Exception ex) { await new MessageDialog(ex.Message, ex.GetType().Name).ShowAsync(); } finally { LoadingBar.Visibility = Visibility.Collapsed; } }
private async Task Initialize() { // Create the scene with an imagery basemap. _mySceneView.Scene = new Scene(Basemap.CreateImagery()); // Add the elevation surface. ArcGISTiledElevationSource tiledElevationSource = new ArcGISTiledElevationSource(_elevationUri); Surface baseSurface = new Surface { ElevationSources = { tiledElevationSource } }; _mySceneView.Scene.BaseSurface = baseSurface; // Add buildings. _mySceneView.Scene.OperationalLayers.Add(new ArcGISSceneLayer(_buildingsUri)); // Configure the graphics overlay for the tank and add the overlay to the SceneView. _tankOverlay.SceneProperties.SurfacePlacement = SurfacePlacement.Relative; _mySceneView.GraphicsOverlays.Add(_tankOverlay); // Configure the heading expression for the tank; this will allow the // viewshed to update automatically based on the tank's position. SimpleRenderer renderer3D = new SimpleRenderer(); renderer3D.SceneProperties.HeadingExpression = "[HEADING]"; _tankOverlay.Renderer = renderer3D; // Create the tank graphic - get the model path. string modelPath = GetModelPath(); // - Create the symbol and make it 10x larger (to be the right size relative to the scene). ModelSceneSymbol tankSymbol = await ModelSceneSymbol.CreateAsync(new Uri(modelPath), 10); // - Adjust the position. tankSymbol.Heading = 90; // - The tank will be positioned relative to the scene surface by its bottom // This ensures that the tank is on the ground rather than partially under it. tankSymbol.AnchorPosition = SceneSymbolAnchorPosition.Bottom; // - Create the graphic. _tank = new Graphic(new MapPoint(-4.506390, 48.385624, SpatialReferences.Wgs84), tankSymbol); // - Update the heading. _tank.Attributes["HEADING"] = 0.0; // - Add the graphic to the overlay. _tankOverlay.Graphics.Add(_tank); // Create a viewshed for the tank. GeoElementViewshed geoViewshed = new GeoElementViewshed( geoElement: _tank, horizontalAngle: 90.0, verticalAngle: 40.0, minDistance: 0.1, maxDistance: 250.0, headingOffset: 0.0, pitchOffset: 0.0) { // Offset viewshed observer location to top of tank. OffsetZ = 3.0 }; // Create the analysis overlay and add to the scene. AnalysisOverlay overlay = new AnalysisOverlay(); overlay.Analyses.Add(geoViewshed); _mySceneView.AnalysisOverlays.Add(overlay); // Create a camera controller to orbit the tank. OrbitGeoElementCameraController cameraController = new OrbitGeoElementCameraController(_tank, 200.0) { CameraPitchOffset = 45.0 }; // - Apply the camera controller to the SceneView. _mySceneView.CameraController = cameraController; // Create a timer; this will enable animating the tank. Timer animationTimer = new Timer(60) { Enabled = true, AutoReset = true }; // - Move the tank every time the timer expires. animationTimer.Elapsed += (o, e) => { AnimateTank(); }; // - Start the timer. animationTimer.Start(); // Allow the user to click to define a new destination. _mySceneView.GeoViewTapped += (sender, args) => { _tankEndPoint = args.Location; }; }
private async void Initialize() { // Configure the basemap. _myMapView.Map = new Map(Basemap.CreateTopographic()); // Create the graphics overlay. _graphicsOverlay = new GraphicsOverlay(); // Add the overlay to the MapView. _myMapView.GraphicsOverlays.Add(_graphicsOverlay); // Update the selection color. _myMapView.SelectionProperties.Color = Color.Yellow; // Create the point collection that defines the polygon. PointCollection polygonPoints = new PointCollection(SpatialReferences.WebMercator) { new MapPoint(-5991501.677830, 5599295.131468), new MapPoint(-6928550.398185, 2087936.739807), new MapPoint(-3149463.800709, 1840803.011362), new MapPoint(-1563689.043184, 3714900.452072), new MapPoint(-3180355.516764, 5619889.608838) }; // Create the polygon. Polygon polygonGeometry = new Polygon(polygonPoints); // Define the symbology of the polygon. SimpleLineSymbol polygonOutlineSymbol = new SimpleLineSymbol(SimpleLineSymbolStyle.Solid, System.Drawing.Color.Green, 2); SimpleFillSymbol polygonFillSymbol = new SimpleFillSymbol(SimpleFillSymbolStyle.ForwardDiagonal, System.Drawing.Color.Green, polygonOutlineSymbol); // Create the polygon graphic and add it to the graphics overlay. _polygonGraphic = new Graphic(polygonGeometry, polygonFillSymbol); _graphicsOverlay.Graphics.Add(_polygonGraphic); // Create the point collection that defines the polyline. PointCollection polylinePoints = new PointCollection(SpatialReferences.WebMercator) { new MapPoint(-4354240.726880, -609939.795721), new MapPoint(-3427489.245210, 2139422.933233), new MapPoint(-2109442.693501, 4301843.057130), new MapPoint(-1810822.771630, 7205664.366363) }; // Create the polyline. Polyline polylineGeometry = new Polyline(polylinePoints); // Create the polyline graphic and add it to the graphics overlay. _polylineGraphic = new Graphic(polylineGeometry, new SimpleLineSymbol(SimpleLineSymbolStyle.Dash, System.Drawing.Color.Red, 4)); _graphicsOverlay.Graphics.Add(_polylineGraphic); // Create the point geometry that defines the point graphic. MapPoint pointGeometry = new MapPoint(-4487263.495911, 3699176.480377, SpatialReferences.WebMercator); // Define the symbology for the point. SimpleMarkerSymbol locationMarker = new SimpleMarkerSymbol(SimpleMarkerSymbolStyle.Circle, System.Drawing.Color.Blue, 10); // Create the point graphic and add it to the graphics overlay. _pointGraphic = new Graphic(pointGeometry, locationMarker); _graphicsOverlay.Graphics.Add(_pointGraphic); try { // Set the viewpoint to center on the point. await _myMapView.SetViewpointAsync(new Viewpoint(pointGeometry, 200000000)); } catch (Exception e) { new UIAlertView("Error", e.ToString(), (IUIAlertViewDelegate)null, "OK", null).Show(); } }
private void Initialize() { // Show an imagery basemap. MyMapView.Map = new Map(Basemap.CreateImagery()); }
private async void Initialize() { // Create new map with the streets basemap Map myMap = new Map(Basemap.CreateStreets()); // Create a Uri to the image service raster Uri myUri = new Uri("https://sampleserver6.arcgisonline.com/arcgis/rest/services/NLCDLandCover2001/ImageServer"); // Create new image service raster from the Uri ImageServiceRaster myImageServiceRaster = new ImageServiceRaster(myUri); try { // Load the image service raster await myImageServiceRaster.LoadAsync(); // NOTE: This is the ASCII text for actual raw JSON string: // ======================================================== //{ // "raster_function_arguments": // { // "z_factor":{"double":25.0,"type":"Raster_function_variable"}, // "slope_type":{"raster_slope_type":"none","type":"Raster_function_variable"}, // "azimuth":{"double":315,"type":"Raster_function_variable"}, // "altitude":{"double":45,"type":"Raster_function_variable"}, // "type":"Raster_function_arguments", // "raster":{"name":"raster","is_raster":true,"type":"Raster_function_variable"}, // "nbits":{"int":8,"type":"Raster_function_variable"} // }, // "raster_function":{"type":"Hillshade_function"}, // "type":"Raster_function_template" //} // Define the JSON string needed for the raster function string theJSON_String = @"{ ""raster_function_arguments"": { ""z_factor"":{ ""double"":25.0,""type"":""Raster_function_variable""}, ""slope_type"":{ ""raster_slope_type"":""none"",""type"":""Raster_function_variable""}, ""azimuth"":{ ""double"":315,""type"":""Raster_function_variable""}, ""altitude"":{ ""double"":45,""type"":""Raster_function_variable""}, ""type"":""Raster_function_arguments"", ""raster"":{ ""name"":""raster"",""is_raster"":true,""type"":""Raster_function_variable""}, ""nbits"":{ ""int"":8,""type"":""Raster_function_variable""} }, ""raster_function"":{ ""type"":""Hillshade_function""}, ""type"":""Raster_function_template"" }"; // Create a raster function from the JSON string using the static/Shared method called: RasterFunction.FromJson(json as String) RasterFunction myRasterFunction = RasterFunction.FromJson(theJSON_String); // NOTE: Depending on your platform/device, you could have alternatively created the raster function via a JSON string that is contained in a // file on disk (ex: hillshade_simplified.json) via the constructor: Esri.ArcGISRuntime.Rasters.RasterFunction(path as String) // Get the raster function arguments RasterFunctionArguments myRasterFunctionArguments = myRasterFunction.Arguments; // Get the list of names from the raster function arguments IReadOnlyList <string> myRasterNames = myRasterFunctionArguments.GetRasterNames(); // Apply the first raster name and image service raster in the raster function arguments myRasterFunctionArguments.SetRaster(myRasterNames[0], myImageServiceRaster); // Create a new raster based on the raster function Raster myRaster = new Raster(myRasterFunction); // Create a new raster layer from the raster RasterLayer myRasterLayer = new RasterLayer(myRaster); // Add the raster layer to the maps layer collection myMap.Basemap.BaseLayers.Add(myRasterLayer); // Assign the map to the map view _myMapView.Map = myMap; // Get the service information (aka. metadata) about the image service raster ArcGISImageServiceInfo myArcGISImageServiceInfo = myImageServiceRaster.ServiceInfo; // Zoom the map to the extent of the image service raster (which also the extent of the raster layer) await _myMapView.SetViewpointGeometryAsync(myArcGISImageServiceInfo.FullExtent); // NOTE: The sample zooms to the extent of the ImageServiceRaster. Currently the ArcGIS Runtime does not // support zooming a RasterLayer out beyond 4 times it's published level of detail. The sample uses // MapView.SetViewpointCenterAsync() method to ensure the image shows when the app starts. You can see // the effect of the image service not showing when you zoom out to the full extent of the image and beyond. } catch (Exception e) { new AlertDialog.Builder(this).SetMessage(e.ToString()).SetTitle("Error").Show(); } }
private async void Initialize() { // Create a map with a light gray canvas basemap. Map sampleMap = new Map(Basemap.CreateLightGrayCanvas()) { InitialViewpoint = new Viewpoint(new MapPoint(-100.175709, 39.221225, SpatialReferences.Wgs84), 20000000) }; // Assign the map to the MapView. _myMapView.Map = sampleMap; // Define the URL string for the US highways feature layer. string highwaysUrlString = "http://sampleserver6.arcgisonline.com/arcgis/rest/services/USA/MapServer/1"; // Create a service feature table from the URL to the US highways feature service. ServiceFeatureTable highwaysServiceFeatureTable = new ServiceFeatureTable(new Uri(highwaysUrlString)); // Create a feature layer from the service feature table. FeatureLayer highwaysFeatureLayer = new FeatureLayer(highwaysServiceFeatureTable); // Add the US highways feature layer to the operations layers collection of the map. sampleMap.OperationalLayers.Add(highwaysFeatureLayer); // Load the US highways feature layer - this way we can obtain it's extent. await highwaysFeatureLayer.LoadAsync(); // Help regarding the JSON syntax for defining the LabelDefinition.FromJson syntax can be found here: // https://developers.arcgis.com/web-map-specification/objects/labelingInfo/ // This particular JSON string will have the following characteristics: // (1) The 'labelExpressionInfo' defines that the label text displayed comes from the field 'rte_num1' in the // feature service and will be prefaced with an "I -". Example: "I - 10", "I - 15", "I - 95", etc. // (2) The 'labelPlacement' will be placed above and along the highway polyline segment. // (3) The 'where' clause restricts the labels to be displayed that has valid (non-empty) data. Empty data // for this service has a single blank space in the 'rte_num1' field. // (4) The 'symbol' for the labeled text will be blue with a yellow halo. string theJsonString = @"{ ""labelExpressionInfo"":{""expression"":""'I - ' + $feature.rte_num1""}, ""labelPlacement"":""esriServerLinePlacementAboveAlong"", ""where"":""rte_num1 <> ' '"", ""symbol"": { ""angle"":0, ""backgroundColor"":[0,0,0,0], ""borderLineColor"":[0,0,0,0], ""borderLineSize"":0, ""color"":[0,0,255,255], ""font"": { ""decoration"":""none"", ""size"":15, ""style"":""normal"", ""weight"":""normal"" }, ""haloColor"":[255,255,0,255], ""haloSize"":1.5, ""horizontalAlignment"":""center"", ""kerning"":false, ""type"":""esriTS"", ""verticalAlignment"":""middle"", ""xoffset"":0, ""yoffset"":0 } }"; // Create a label definition from the JSON string. LabelDefinition highwaysLabelDefinition = LabelDefinition.FromJson(theJsonString); // Add the label definition to the feature layer's label definition collection. highwaysFeatureLayer.LabelDefinitions.Add(highwaysLabelDefinition); // Enable the visibility of labels to be seen. highwaysFeatureLayer.LabelsEnabled = true; }
private async void Initialize() { // Create a new Map with a vector streets basemap. Map myMap = new Map(Basemap.CreateStreetsVector()); // Create the URI to the Service Requests map service. Uri serviceRequestUri = new Uri("https://sampleserver6.arcgisonline.com/arcgis/rest/services/ServiceRequest/MapServer"); // Create a new ArcGISMapImageLayer that uses the service URI. ArcGISMapImageLayer serviceRequestsMapImageLayer = new ArcGISMapImageLayer(serviceRequestUri); try { // Load all sublayers and tables contained by the map image layer. await serviceRequestsMapImageLayer.LoadTablesAndLayersAsync(); // Set the initial map extent to the extent of all service request features. Envelope requestsExtent = serviceRequestsMapImageLayer.FullExtent; myMap.InitialViewpoint = new Viewpoint(requestsExtent); // Add the layer to the map. myMap.OperationalLayers.Add(serviceRequestsMapImageLayer); // Get the service request comments table from the map image layer. ServiceFeatureTable commentsTable = serviceRequestsMapImageLayer.Tables[0]; // Create query parameters to get all non-null service request comment records (features) from the table. QueryParameters queryToGetNonNullComments = new QueryParameters { WhereClause = "requestid <> '' AND comments <> ''" }; // Query the comments table to get the non-null records. FeatureQueryResult commentQueryResult = await commentsTable.QueryFeaturesAsync(queryToGetNonNullComments, QueryFeatureFields.LoadAll); // Show the records from the service request comments table in the UITableView control. foreach (ArcGISFeature commentFeature in commentQueryResult) { _serviceRequestComments.Add(commentFeature); } // Create the table view source that uses the list of features. _commentsTableSource = new ServiceRequestCommentsTableSource(_serviceRequestComments); // Assign the table view source to the table view control. _tableView.Source = _commentsTableSource; // Subscribe to event. _commentsTableSource.ServiceRequestCommentSelected += CommentsTableSource_ServiceRequestCommentSelected; // Create a graphics overlay to show selected features and add it to the map view. _selectedFeaturesOverlay = new GraphicsOverlay(); _myMapView.GraphicsOverlays.Add(_selectedFeaturesOverlay); // Assign the map to the MapView. _myMapView.Map = myMap; // Reload the table view data to refresh the display. _tableView.ReloadData(); } catch (Exception e) { new UIAlertView("Error", e.ToString(), (IUIAlertViewDelegate)null, "OK", null).Show(); } }
private void Initialize() { _viewHeight = HeightSlider.Value; // Create the scene with the imagery basemap. Scene myScene = new Scene(Basemap.CreateImagery()); MySceneView.Scene = myScene; // Add the surface elevation. Surface mySurface = new Surface(); mySurface.ElevationSources.Add(new ArcGISTiledElevationSource(_localElevationImageService)); myScene.BaseSurface = mySurface; // Add the scene layer. ArcGISSceneLayer sceneLayer = new ArcGISSceneLayer(_buildingsUrl); myScene.OperationalLayers.Add(sceneLayer); // Create the MapPoint representing the initial location. MapPoint initialLocation = new MapPoint(-4.5, 48.4, 46 + _viewHeight); // Create the location viewshed analysis. _viewshed = new LocationViewshed( initialLocation, HeadingSlider.Value, PitchSlider.Value, HorizontalAngleSlider.Value, VerticalAngleSlider.Value, MinimumDistanceSlider.Value, MaximumDistanceSlider.Value); // Create a camera based on the initial location. Camera camera = new Camera(initialLocation, 200.0, 20.0, 70.0, 0.0); // Create a symbol for the viewpoint. _viewpointSymbol = SimpleMarkerSceneSymbol.CreateSphere(Color.Blue, 10, SceneSymbolAnchorPosition.Center); // Add the symbol to the viewpoint overlay. _viewpointOverlay = new GraphicsOverlay(); _viewpointOverlay.SceneProperties = new LayerSceneProperties(SurfacePlacement.Absolute); _viewpointOverlay.Graphics.Add(new Graphic(initialLocation, _viewpointSymbol)); // Apply the camera to the scene view. MySceneView.SetViewpointCamera(camera); // Create an analysis overlay for showing the viewshed analysis. _analysisOverlay = new AnalysisOverlay(); // Add the viewshed analysis to the overlay. _analysisOverlay.Analyses.Add(_viewshed); // Add the analysis overlay to the SceneView. MySceneView.AnalysisOverlays.Add(_analysisOverlay); // Add the graphics overlay MySceneView.GraphicsOverlays.Add(_viewpointOverlay); // Update the frustum outline Color. // The frustum outline shows the volume in which the viewshed analysis is performed. Viewshed.FrustumOutlineColor = Color.Blue; // Subscribe to tap events. This enables the 'pick up' and 'drop' workflow for moving the viewpoint. MySceneView.GeoViewTapped += MySceneViewOnGeoViewTapped; }
private async void Initialize() { try { // Add event handler for when this sample is unloaded. Unloaded += SampleUnloaded; // Create the map view. MyMapView.Map = new Map(Basemap.CreateNavigationVector()); // Create the route task, using the online routing service. RouteTask routeTask = await RouteTask.CreateAsync(_routingUri); // Get the default route parameters. RouteParameters routeParams = await routeTask.CreateDefaultParametersAsync(); // Explicitly set values for parameters. routeParams.ReturnDirections = true; routeParams.ReturnStops = true; routeParams.ReturnRoutes = true; routeParams.OutputSpatialReference = SpatialReferences.Wgs84; // Create stops for each location. Stop stop1 = new Stop(_conventionCenter) { Name = "San Diego Convention Center" }; Stop stop2 = new Stop(_memorial) { Name = "USS San Diego Memorial" }; Stop stop3 = new Stop(_aerospaceMuseum) { Name = "RH Fleet Aerospace Museum" }; // Assign the stops to the route parameters. List <Stop> stopPoints = new List <Stop> { stop1, stop2, stop3 }; routeParams.SetStops(stopPoints); // Get the route results. _routeResult = await routeTask.SolveRouteAsync(routeParams); _route = _routeResult.Routes[0]; // Add a graphics overlay for the route graphics. MyMapView.GraphicsOverlays.Add(new GraphicsOverlay()); // Add graphics for the stops. SimpleMarkerSymbol stopSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbolStyle.Diamond, Color.OrangeRed, 20); MyMapView.GraphicsOverlays[0].Graphics.Add(new Graphic(_conventionCenter, stopSymbol)); MyMapView.GraphicsOverlays[0].Graphics.Add(new Graphic(_memorial, stopSymbol)); MyMapView.GraphicsOverlays[0].Graphics.Add(new Graphic(_aerospaceMuseum, stopSymbol)); // Create a graphic (with a dashed line symbol) to represent the route. _routeAheadGraphic = new Graphic(_route.RouteGeometry) { Symbol = new SimpleLineSymbol(SimpleLineSymbolStyle.Dash, Color.BlueViolet, 5) }; // Create a graphic (solid) to represent the route that's been traveled (initially empty). _routeTraveledGraphic = new Graphic { Symbol = new SimpleLineSymbol(SimpleLineSymbolStyle.Solid, Color.LightBlue, 3) }; // Add the route graphics to the map view. MyMapView.GraphicsOverlays[0].Graphics.Add(_routeAheadGraphic); MyMapView.GraphicsOverlays[0].Graphics.Add(_routeTraveledGraphic); // Set the map viewpoint to show the entire route. await MyMapView.SetViewpointGeometryAsync(_route.RouteGeometry, 100); // Enable the navigation button. StartNavigationButton.IsEnabled = true; } catch (Exception e) { await new MessageDialog(e.Message, "Error").ShowAsync(); } }
private void Initialize() { // Create and show a new map using the WebMercator spatial reference. Map newMap = new Map(SpatialReferences.WebMercator) { // Set the basemap of the map to be a topographic layer. Basemap = Basemap.CreateTopographic() }; // Create a graphics overlay to hold the input geometries for the clip operation. _inputGeometriesGraphicsOverlay = new GraphicsOverlay(); // Add the input geometries graphics overlay to the MapView. _myMapView.GraphicsOverlays.Add(_inputGeometriesGraphicsOverlay); // Create a graphics overlay to hold the resulting geometries from the three GeometryEngine.Clip operations. _clipAreasGraphicsOverlay = new GraphicsOverlay(); // Add the resulting geometries graphics overlay to the MapView. _myMapView.GraphicsOverlays.Add(_clipAreasGraphicsOverlay); // Create a simple line symbol for the 1st parameter of the GeometryEngine.Clip operation - it follows the // boundary of Colorado. SimpleLineSymbol coloradoSimpleLineSymbol = new SimpleLineSymbol(SimpleLineSymbolStyle.Solid, System.Drawing.Color.Blue, 4); // Create the color that will be used as the fill for the Colorado graphic. It will be a semi-transparent, blue color. System.Drawing.Color coloradoFillColor = System.Drawing.Color.FromArgb(34, 0, 0, 255); // Create the simple fill symbol for the Colorado graphic - comprised of a fill style, fill color and outline. SimpleFillSymbol coloradoSimpleFillSymbol = new SimpleFillSymbol(SimpleFillSymbolStyle.Solid, coloradoFillColor, coloradoSimpleLineSymbol); // Create the geometry of the Colorado graphic. Envelope colorado = new Envelope( new MapPoint(-11362327.128340, 5012861.290274, SpatialReferences.WebMercator), new MapPoint(-12138232.018408, 4441198.773776, SpatialReferences.WebMercator)); // Create the graphic for Colorado - comprised of a polygon shape and fill symbol. _coloradoGraphic = new Graphic(colorado, coloradoSimpleFillSymbol); // Add the Colorado graphic to the input geometries graphics overlay collection. _inputGeometriesGraphicsOverlay.Graphics.Add(_coloradoGraphic); // Create a simple line symbol for the three different clip geometries. SimpleLineSymbol clipGeometriesLineSymbol = new SimpleLineSymbol( SimpleLineSymbolStyle.Dot, System.Drawing.Color.Red, 5); // Create an envelope outside Colorado. Envelope outsideEnvelope = new Envelope( new MapPoint(-11858344.321294, 5147942.225174, SpatialReferences.WebMercator), new MapPoint(-12201990.219681, 5297071.577304, SpatialReferences.WebMercator) ); // Create the graphic for an envelope outside Colorado - comprised of a polyline shape and line symbol. _outsideGraphic = new Graphic(outsideEnvelope, clipGeometriesLineSymbol); // Add the envelope outside Colorado graphic to the graphics overlay collection. _inputGeometriesGraphicsOverlay.Graphics.Add(_outsideGraphic); // Create an envelope intersecting Colorado. Envelope intersectingEnvelope = new Envelope( new MapPoint(-11962086.479298, 4566553.881363, SpatialReferences.WebMercator), new MapPoint(-12260345.183558, 4332053.378376, SpatialReferences.WebMercator) ); // Create the graphic for an envelope intersecting Colorado - comprised of a polyline shape and line symbol. _intersectingGraphic = new Graphic(intersectingEnvelope, clipGeometriesLineSymbol); // Add the envelope intersecting Colorado graphic to the graphics overlay collection. _inputGeometriesGraphicsOverlay.Graphics.Add(_intersectingGraphic); // Create a envelope inside Colorado. Envelope containedEnvelope = new Envelope( new MapPoint(-11655182.595204, 4741618.772994, SpatialReferences.WebMercator), new MapPoint(-11431488.567009, 4593570.068343, SpatialReferences.WebMercator) ); // Create the graphic for an envelope inside Colorado - comprised of a polyline shape and line symbol. _containedGraphic = new Graphic(containedEnvelope, clipGeometriesLineSymbol); // Add the envelope inside Colorado graphic to the graphics overlay collection. _inputGeometriesGraphicsOverlay.Graphics.Add(_containedGraphic); // Get the extent of all of the graphics in the graphics overlay with a little padding to used as the initial zoom extent of the map. Geometry visibleExtent = GetExtentOfGraphicsOverlay(_inputGeometriesGraphicsOverlay, 1.3, SpatialReferences.WebMercator); // Set the initial visual extent of the map view to the extent of the graphics overlay. newMap.InitialViewpoint = new Viewpoint(visibleExtent); // Assign the map to the MapView. _myMapView.Map = newMap; }
private async void Initialize() { // Create the scene with an imagery basemap. MySceneView.Scene = new Scene(Basemap.CreateImagery()); // Add the elevation surface. ArcGISTiledElevationSource tiledElevationSource = new ArcGISTiledElevationSource(_elevationUri); Surface baseSurface = new Surface { ElevationSources = { tiledElevationSource } }; MySceneView.Scene.BaseSurface = baseSurface; // Add buildings. ArcGISSceneLayer sceneLayer = new ArcGISSceneLayer(_buildingsUri); MySceneView.Scene.OperationalLayers.Add(sceneLayer); await sceneLayer.LoadAsync(); // Configure the graphics overlay for the tank and add the overlay to the SceneView. _tankOverlay.SceneProperties.SurfacePlacement = SurfacePlacement.Relative; MySceneView.GraphicsOverlays.Add(_tankOverlay); // Configure the heading expression for the tank; this will allow the // viewshed to update automatically based on the tank's position. SimpleRenderer renderer3D = new SimpleRenderer(); renderer3D.SceneProperties.HeadingExpression = "[HEADING]"; _tankOverlay.Renderer = renderer3D; try { // Create the tank graphic - get the model path. string modelPath = GetModelPath(); // - Create the symbol and make it 10x larger (to be the right size relative to the scene). ModelSceneSymbol tankSymbol = await ModelSceneSymbol.CreateAsync(new Uri(modelPath), 10); // - Adjust the position. tankSymbol.Heading = 90; // - The tank will be positioned relative to the scene surface by its bottom. // This ensures that the tank is on the ground rather than partially under it. tankSymbol.AnchorPosition = SceneSymbolAnchorPosition.Bottom; // - Create the graphic. _tank = new Graphic(new MapPoint(28.047199, -26.189105, SpatialReferences.Wgs84), tankSymbol); // - Update the heading. _tank.Attributes["HEADING"] = 0.0; // - Add the graphic to the overlay. _tankOverlay.Graphics.Add(_tank); // Create a viewshed for the tank. GeoElementViewshed geoViewshed = new GeoElementViewshed( geoElement: _tank, horizontalAngle: 90.0, verticalAngle: 40.0, minDistance: 0.1, maxDistance: 250.0, headingOffset: 0.0, pitchOffset: 0.0) { // Offset viewshed observer location to top of tank. OffsetZ = 3.0 }; // Create the analysis overlay and add to the scene. AnalysisOverlay overlay = new AnalysisOverlay(); overlay.Analyses.Add(geoViewshed); MySceneView.AnalysisOverlays.Add(overlay); // Create a camera controller to orbit the tank. OrbitGeoElementCameraController cameraController = new OrbitGeoElementCameraController(_tank, 200.0) { CameraPitchOffset = 45.0 }; // - Apply the camera controller to the SceneView. MySceneView.CameraController = cameraController; // Create a timer; this will enable animating the tank. Device.StartTimer(new TimeSpan(0, 0, 0, 0, 60), () => { // Move the tank every time the timer elapses. AnimateTank(); // Keep the timer running. return(true); }); // Allow the user to click to define a new destination. MySceneView.GeoViewTapped += (sender, args) => { _tankEndPoint = args.Location; }; } catch (Exception e) { await Application.Current.MainPage.DisplayAlert("Error", e.ToString(), "OK"); } }
private async void Initialize() { // Create scene Scene myScene = new Scene(Basemap.CreateImageryWithLabels()) { InitialViewpoint = new Viewpoint(_observerPoint, 1600) }; // Set initial viewpoint // Create the elevation source ElevationSource myElevationSource = new ArcGISTiledElevationSource(_elevationUri); // Add the elevation source to the scene myScene.BaseSurface.ElevationSources.Add(myElevationSource); // Create the building scene layer ArcGISSceneLayer mySceneLayer = new ArcGISSceneLayer(_buildingsUri); // Add the building layer to the scene myScene.OperationalLayers.Add(mySceneLayer); // Add the observer to the scene // Create a graphics overlay with relative surface placement; relative surface placement allows the Z position of the observation point to be adjusted GraphicsOverlay overlay = new GraphicsOverlay() { SceneProperties = new LayerSceneProperties(SurfacePlacement.Relative) }; // Create the symbol that will symbolize the observation point SimpleMarkerSceneSymbol symbol = new SimpleMarkerSceneSymbol(SimpleMarkerSceneSymbolStyle.Sphere, System.Drawing.Color.Red, 10, 10, 10, SceneSymbolAnchorPosition.Bottom); // Create the observation point graphic from the point and symbol _observerGraphic = new Graphic(_observerPoint, symbol); // Add the observer to the overlay overlay.Graphics.Add(_observerGraphic); // Add the overlay to the scene _mySceneView.GraphicsOverlays.Add(overlay); try { // Add the taxi to the scene // Create the model symbol for the taxi ModelSceneSymbol taxiSymbol = await ModelSceneSymbol.CreateAsync(new Uri(GetModelUri())); // Set the anchor position for the mode; ensures that the model appears above the ground taxiSymbol.AnchorPosition = SceneSymbolAnchorPosition.Bottom; // Create the graphic from the taxi starting point and the symbol _taxiGraphic = new Graphic(_points[0], taxiSymbol); // Add the taxi graphic to the overlay overlay.Graphics.Add(_taxiGraphic); // Create GeoElement Line of sight analysis (taxi to building) // Create the analysis _geoLine = new GeoElementLineOfSight(_observerGraphic, _taxiGraphic) { TargetOffsetZ = 2 }; // Apply an offset to the target. This helps avoid some false negatives // Create the analysis overlay AnalysisOverlay myAnalysisOverlay = new AnalysisOverlay(); // Add the analysis to the overlay myAnalysisOverlay.Analyses.Add(_geoLine); // Add the analysis overlay to the scene _mySceneView.AnalysisOverlays.Add(myAnalysisOverlay); // Create a timer; this will enable animating the taxi Timer timer = new Timer(60); // Move the taxi every time the timer expires timer.Elapsed += AnimationTimer_Elapsed; // Keep the timer running continuously timer.AutoReset = true; // Start the timer timer.Start(); // Subscribe to TargetVisible events; allows for updating the UI and selecting the taxi when it is visible _geoLine.TargetVisibilityChanged += Geoline_TargetVisibilityChanged; // Add the scene to the view _mySceneView.Scene = myScene; } catch (Exception e) { new AlertDialog.Builder(this).SetMessage(e.ToString()).SetTitle("Error").Show(); } }
public CompassSceneViewSample() { InitializeComponent(); sceneView.Scene = new Scene(Basemap.CreateImagery()); }
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(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); } // 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 += Sample_Unloaded; // Enable changing the settings on user interaction DayRadioButton.Checked += Setting_Checked; NightRadioButton.Checked += Setting_Checked; DuskRadioButton.Checked += Setting_Checked; PlainAreaRadioButton.Checked += Setting_Checked; SymbolizedAreaRadioButton.Checked += Setting_Checked; PaperchartRadioButton.Checked += Setting_Checked; SimplifiedRadioButton.Checked += Setting_Checked; } catch (Exception e) { MessageBox.Show(e.ToString(), "Error"); } }
private async void Initialize() { try { // Create a tile cache and load it with the SanFrancisco streets tpk. TileCache tileCache = new TileCache(DataManager.GetDataFolder("3f1bbf0ec70b409a975f5c91f363fe7d", "SanFrancisco.tpk")); // Create the corresponding layer based on the tile cache. ArcGISTiledLayer tileLayer = new ArcGISTiledLayer(tileCache); // Create the basemap based on the tile cache. Basemap sfBasemap = new Basemap(tileLayer); // Create the map with the tile-based basemap. Map map = new Map(sfBasemap); // Assign the map to the MapView. _myMapView.Map = map; // Create a new symbol for the extent graphic. SimpleLineSymbol lineSymbol = new SimpleLineSymbol(SimpleLineSymbolStyle.Solid, Color.Red, 2); // Create graphics overlay for the extent graphic and apply a renderer. GraphicsOverlay extentOverlay = new GraphicsOverlay { Renderer = new SimpleRenderer(lineSymbol) }; // Add graphics overlay to the map view. _myMapView.GraphicsOverlays.Add(extentOverlay); // Set up an event handler for 'tapped' events. _myMapView.GeoViewTapped += GeoViewTapped; // Set up an event handler for when the viewpoint (extent) changes. _myMapView.ViewpointChanged += MapViewExtentChanged; // Create a task for generating a geodatabase (GeodatabaseSyncTask). _gdbSyncTask = await GeodatabaseSyncTask.CreateAsync(_featureServiceUri); // Add all graphics from the service to the map. foreach (IdInfo layer in _gdbSyncTask.ServiceInfo.LayerInfos) { // Get the Uri for this particular layer. Uri onlineTableUri = new Uri(_featureServiceUri + "/" + layer.Id); // Create the ServiceFeatureTable. ServiceFeatureTable onlineTable = new ServiceFeatureTable(onlineTableUri); // Wait for the table to load. await onlineTable.LoadAsync(); // Add the layer to the map's operational layers if load succeeds. if (onlineTable.LoadStatus == Esri.ArcGISRuntime.LoadStatus.Loaded) { map.OperationalLayers.Add(new FeatureLayer(onlineTable)); } } // Update the graphic - needed in case the user decides not to interact before pressing the button. UpdateMapExtent(); // Enable the generate button now that the sample is ready. _generateButton.Enabled = true; } catch (Exception ex) { ShowStatusMessage(ex.ToString()); } }
private void Initialize() { Map map = new Map(Basemap.CreateTopographic()); MyMapView.Map = map; }
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("https://static.arcgis.com/images/Symbols/SafetyHealth/FireStation.png")) { Height = 30, Width = 30 }; // Incident symbol. PictureMarkerSymbol incidentSymbol = new PictureMarkerSymbol(new Uri("https://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, System.Drawing.Color.FromArgb(125, 25, 45, 85), 5.0f), new SimpleLineSymbol(SimpleLineSymbolStyle.Solid, System.Drawing.Color.FromArgb(125, 35, 65, 120), 5.0f), new SimpleLineSymbol(SimpleLineSymbolStyle.Solid, System.Drawing.Color.FromArgb(125, 55, 100, 190), 5.0f), new SimpleLineSymbol(SimpleLineSymbolStyle.Solid, System.Drawing.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.IsEnabled = true; } catch (Exception exception) { await Application.Current.MainPage.DisplayAlert("Error", "An exception has occurred.\n" + exception.Message, "OK"); } }
private void Initialize() { // Configure the basemap MyMapView.Map = new Map(Basemap.CreateTopographic()); // Create the graphics overlay _graphicsOverlay = new GraphicsOverlay(); // Add the overlay to the MapView MyMapView.GraphicsOverlays.Add(_graphicsOverlay); // Update the selection color MyMapView.SelectionProperties.Color = Color.Yellow; // Create the point collection that defines the polygon PointCollection polygonPoints = new PointCollection(SpatialReferences.WebMercator) { new MapPoint(-5991501.677830, 5599295.131468), new MapPoint(-6928550.398185, 2087936.739807), new MapPoint(-3149463.800709, 1840803.011362), new MapPoint(-1563689.043184, 3714900.452072), new MapPoint(-3180355.516764, 5619889.608838) }; // Create the polygon Polygon polygonGeometry = new Polygon(polygonPoints); // Define the symbology of the polygon SimpleLineSymbol polygonOutlineSymbol = new SimpleLineSymbol(SimpleLineSymbolStyle.Solid, Colors.Green, 2); SimpleFillSymbol polygonFillSymbol = new SimpleFillSymbol(SimpleFillSymbolStyle.ForwardDiagonal, Colors.Green, polygonOutlineSymbol); // Create the polygon graphic and add it to the graphics overlay _polygonGraphic = new Graphic(polygonGeometry, polygonFillSymbol); _graphicsOverlay.Graphics.Add(_polygonGraphic); // Create the point collection that defines the polyline PointCollection polylinePoints = new PointCollection(SpatialReferences.WebMercator) { new MapPoint(-4354240.726880, -609939.795721), new MapPoint(-3427489.245210, 2139422.933233), new MapPoint(-2109442.693501, 4301843.057130), new MapPoint(-1810822.771630, 7205664.366363) }; // Create the polyline Polyline polylineGeometry = new Polyline(polylinePoints); // Create the polyline graphic and add it to the graphics overlay _polylineGraphic = new Graphic(polylineGeometry, new SimpleLineSymbol(SimpleLineSymbolStyle.Dash, Colors.Red, 4)); _graphicsOverlay.Graphics.Add(_polylineGraphic); // Create the point geometry that defines the point graphic MapPoint pointGeometry = new MapPoint(-4487263.495911, 3699176.480377, SpatialReferences.WebMercator); // Define the symbology for the point SimpleMarkerSymbol locationMarker = new SimpleMarkerSymbol(SimpleMarkerSymbolStyle.Circle, Colors.Blue, 10); // Create the point graphic and add it to the graphics overlay _pointGraphic = new Graphic(pointGeometry, locationMarker); _graphicsOverlay.Graphics.Add(_pointGraphic); // Listen for taps; the spatial relationships will be updated in the handler MyMapView.GeoViewTapped += MyMapView_GeoViewTapped; // Set the viewpoint to center on the point MyMapView.SetViewpointCenterAsync(pointGeometry, 200000000); }