Click or drag to resize

SimpleMarkerSceneSymbol Class

Base class for symbols used in a Scene
Inheritance Hierarchy

Namespace:  Esri.ArcGISRuntime.Symbology
Assembly:  Esri.ArcGISRuntime (in Esri.ArcGISRuntime.dll) Version: 100.11.0
Syntax
public sealed class SimpleMarkerSceneSymbol : MarkerSceneSymbol

The SimpleMarkerSceneSymbol type exposes the following members.

Constructors
  NameDescription
Public methodCode exampleSimpleMarkerSceneSymbol
Initializes a new instance of the SimpleMarkerSceneSymbol class with sphere as default style.
Public methodSimpleMarkerSceneSymbol(SimpleMarkerSceneSymbolStyle, Color, Double, Double, Double, SceneSymbolAnchorPosition)
Initializes a new instance of the SimpleMarkerSceneSymbol class.
Top
Properties
  NameDescription
Public propertyCode exampleAnchorPosition
Gets or sets the anchor position of the simple marker scene symbol.
(Inherited from MarkerSceneSymbol.)
Public propertyColor
Gets or sets the symbol color.
(Inherited from MarkerSceneSymbol.)
Public propertyDepth
Gets or sets the depth (in meters) of the simple marker scene symbol.
(Inherited from MarkerSceneSymbol.)
Public propertyCode exampleHeading
Gets or sets the heading (in degrees) of the scene marker symbol.
(Inherited from MarkerSceneSymbol.)
Public propertyHeight
Gets or sets the height (in meters) of the simple marker scene symbol.
(Inherited from MarkerSceneSymbol.)
Public propertyCode examplePitch
Gets or sets the pitch (in degrees) of the scene marker symbol.
(Inherited from MarkerSceneSymbol.)
Public propertyRoll
Gets or sets the roll (in degrees) of the scene marker symbol.
(Inherited from MarkerSceneSymbol.)
Public propertyStyle
Gets or sets the style of the scene marker symbol.
Public propertyWidth
Gets or sets the width (in meters) of the simple marker scene symbol.
(Inherited from MarkerSceneSymbol.)
Top
Methods
  NameDescription
Public methodClone
Clones this instance of Symbol and its members.
(Inherited from Symbol.)
Public methodStatic memberCreateCone(Color, Double, Double)
Creates a simple marker scene symbol with cone style.
Public methodStatic memberCreateCone(Color, Double, Double, SceneSymbolAnchorPosition)
Creates a simple marker scene symbol with cone style.
Public methodStatic memberCreateCube(Color, Double)
Creates a simple marker scene symbol with cube style.
Public methodStatic memberCreateCube(Color, Double, SceneSymbolAnchorPosition)
Creates a simple marker scene symbol with cube style.
Public methodStatic memberCreateCylinder(Color, Double, Double)
Creates a simple marker scene symbol with cylinder style.
Public methodStatic memberCreateCylinder(Color, Double, Double, SceneSymbolAnchorPosition)
Creates a simple marker scene symbol with cylinder style.
Public methodStatic memberCreateDiamond(Color, Double, Double)
Creates a simple marker scene symbol with diamond style.
Public methodStatic memberCreateDiamond(Color, Double, Double, SceneSymbolAnchorPosition)
Creates a simple marker scene symbol with diamond style.
Public methodStatic memberCreateSphere(Color, Double)
Creates a simple marker scene symbol with sphere style.
Public methodStatic memberCreateSphere(Color, Double, SceneSymbolAnchorPosition)
Creates a simple marker scene symbol with sphere style.
Public methodCode exampleCreateSwatchAsync(Double)
Creates a swatch image of this symbol using the default size and a transparent background.
(Inherited from Symbol.)
Public methodCreateSwatchAsync(Color, Double)
Creates a swatch image of this symbol, using the default sizing and a transparent background.
(Inherited from Symbol.)
Public methodCreateSwatchAsync(Int32, Int32, Double, Color)
Creates a swatch image of this symbol, scaled to fit the specified dimensions.
(Inherited from Symbol.)
Public methodCreateSwatchAsync(Int32, Int32, Single, Color, Geometry)
Creates a swatch image of this symbol, with the specified image size, dpi, background color, and geometry.
(Inherited from Symbol.)
Public methodStatic memberCreateTetrahedron(Color, Double, Double)
Creates a simple marker scene symbol with tetrahedron style.
Public methodStatic memberCreateTetrahedron(Color, Double, Double, SceneSymbolAnchorPosition)
Creates a simple marker scene symbol with tetrahedron style.
Public methodToJson
Returns the json representation of the symbol
(Inherited from Symbol.)
Top
Events
  NameDescription
Public eventPropertyChanged
Occurs when a property value changes.
(Inherited from Symbol.)
Top
Examples

WPF

Example Name: GetElevationAtPoint

Get the elevation for a given point on a surface in a scene.

Code example screen shot.

C#
// Copyright 2019 Esri.
// 
// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
// You may obtain a copy of the License at: http://www.apache.org/licenses/LICENSE-2.0
// 
// Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific
// language governing permissions and limitations under the License.

using Esri.ArcGISRuntime.Geometry;
using Esri.ArcGISRuntime.Mapping;
using Esri.ArcGISRuntime.Symbology;
using Esri.ArcGISRuntime.UI;
using System;
using System.Diagnostics;
using System.Drawing;
using System.Windows;

namespace ArcGISRuntime.WPF.Samples.GetElevationAtPoint
{
    [ArcGISRuntime.Samples.Shared.Attributes.Sample(
        name: "Get elevation at a point",
        category: "Scene",
        description: "Get the elevation for a given point on a surface in a scene.",
        instructions: "Tap anywhere on the surface to get the elevation at that point. Elevation is reported in meters since the scene view is in WGS84.",
        tags: new[] { "elevation", "point", "surface" })]
    public partial class GetElevationAtPoint
    {
        // URL of the elevation service - provides elevation component of the scene.
        private readonly Uri _elevationUri = new Uri("https://elevation3d.arcgis.com/arcgis/rest/services/WorldElevation3D/Terrain3D/ImageServer");

        // Starting point of the observer.
        private readonly MapPoint _observerPoint = new MapPoint(83.9, 28.42, SpatialReferences.Wgs84);

        // Graphics overlay.
        private GraphicsOverlay _overlay;

        // Surface (for elevation).
        private Surface _baseSurface;

        // Create symbols for the text and marker.
        private SimpleMarkerSceneSymbol _elevationMarker;
        private TextSymbol _elevationTextSymbol;
        private readonly Graphic _elevationTextGraphic = new Graphic();

        public GetElevationAtPoint()
        {
            InitializeComponent();

            // Create the UI, setup the control references and execute initialization.
            Initialize();

            // Handle taps on the scene view for getting elevation.
            MySceneView.GeoViewTapped += SceneViewTapped;
        }

        private void Initialize()
        {
            // Create the camera for the scene.
            Camera camera = new Camera(_observerPoint, 20000.0, 10.0, 70.0, 0.0);

            // Create a scene.
            Scene myScene = new Scene(Basemap.CreateImageryWithLabels())
            {
                // Set the initial viewpoint.
                InitialViewpoint = new Viewpoint(_observerPoint, 1000000, camera)
            };

            // Create the marker for showing where the user taps.
            _elevationMarker = SimpleMarkerSceneSymbol.CreateCylinder(Color.Red, 10, 750);

            // Create the text for displaying the elevation value.
            _elevationTextSymbol = new TextSymbol("", Color.Red, 20, Esri.ArcGISRuntime.Symbology.HorizontalAlignment.Center, Esri.ArcGISRuntime.Symbology.VerticalAlignment.Middle);
            _elevationTextGraphic.Symbol = _elevationTextSymbol;

            // Create the base surface.
            _baseSurface = new Surface();
            _baseSurface.ElevationSources.Add(new ArcGISTiledElevationSource(_elevationUri));

            // Add the base surface to the scene.
            myScene.BaseSurface = _baseSurface;

            // Graphics overlay for displaying points.
            _overlay = new GraphicsOverlay
            {
                SceneProperties = new LayerSceneProperties(SurfacePlacement.Absolute)
            };
            MySceneView.GraphicsOverlays.Add(_overlay);

            // Add the scene to the view.
            MySceneView.Scene = myScene;
        }

        private async void SceneViewTapped(object sender, Esri.ArcGISRuntime.UI.Controls.GeoViewInputEventArgs e)
        {
            try
            {
                // Remove this method from the event handler to prevent concurrent calls.
                MySceneView.GeoViewTapped -= SceneViewTapped;

                // Check that the point is on the surface.
                if (e.Location != null)
                {
                    // Clear any existing graphics from the graphics overlay.
                    _overlay.Graphics.Clear();

                    // Get the elevation value.
                    double elevation = await _baseSurface.GetElevationAsync(e.Location);

                    // Set the text displaying the elevation.
                    _elevationTextSymbol.Text = $"{Math.Round(elevation)} m";
                    _elevationTextGraphic.Geometry = new MapPoint(e.Location.X, e.Location.Y, e.Location.Z + 850);

                    // Add the text to the graphics overlay.
                    _overlay.Graphics.Add(_elevationTextGraphic);

                    // Add the marker indicating where the user tapped.
                    _overlay.Graphics.Add(new Graphic(e.Location, _elevationMarker));
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.Message);
                MessageBox.Show(ex.Message, "Sample error");
            }
            finally
            {
                // Re-add to the event handler.
                MySceneView.GeoViewTapped += SceneViewTapped;
            }
        }
    }
}
XAML
<UserControl
    x:Class="ArcGISRuntime.WPF.Samples.GetElevationAtPoint.GetElevationAtPoint"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:esri="http://schemas.esri.com/arcgis/runtime/2013">
    <Grid>
        <esri:SceneView x:Name="MySceneView" />
        <Border Style="{StaticResource BorderStyle}">
            <TextBlock Text="Tap to find the elevation for a point."
                       TextAlignment="Center" TextWrapping="Wrap" FontWeight="SemiBold" />
        </Border>
    </Grid>
</UserControl>
See Also
Additional Examples
Hyperlink to ExampleDescription
GetElevationAtPointGet the elevation for a given point on a surface in a scene.
LineOfSightGeoElementShow a line of sight between two moving objects.
ScenePropertiesExpressionsUpdate the orientation of a graphic using expressions based on its attributes.
UseDistanceCompositeSymChange a graphic's symbol based on the camera's proximity to it.
ViewshedLocationPerform a viewshed analysis from a defined vantage point.