About the Creating a toolbar of globe tools Sample
[C#]
PointElement.cs
using ESRI.ArcGIS.Geometry;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Analyst3D;
using ESRI.ArcGIS.Display;
using ESRI.ArcGIS.GlobeCore;
namespace GlobeGraphicsToolbar
{
public class PointElement
{
private IElement _element;
private IGlobeGraphicsElementProperties _elementProperties;
public PointElement(IGeometry geometry, double size, esriSimpleMarkerStyle simpleMarkerStyle)
{
_element = GetElement(geometry, size, simpleMarkerStyle);
_elementProperties = GetElementProperties();
}
public PointElement(IGeometry geometry, double size, esriSimple3DMarkerStyle simple3DMarkerStyle)
{
_element = GetElement(geometry, size, simple3DMarkerStyle);
_elementProperties = GetElementProperties();
}
private IElement GetElement(IGeometry geometry, double size, esriSimpleMarkerStyle simpleMarkerStyle)
{
IElement element;
IMarkerElement markerElement = new MarkerElementClass();
element = markerElement as IElement;
ISimpleMarkerSymbol simpleMarkerSymbol = new SimpleMarkerSymbolClass();
simpleMarkerSymbol.Style = simpleMarkerStyle;
simpleMarkerSymbol.Color = ColorSelection.GetColor();
simpleMarkerSymbol.Size = size;
element.Geometry = geometry;
markerElement.Symbol = simpleMarkerSymbol;
return element;
}
private IElement GetElement(IGeometry geometry, double size, esriSimple3DMarkerStyle simple3DMarkerStyle)
{
IElement element;
IMarkerElement markerElement = new MarkerElementClass();
element = markerElement as IElement;
ISimpleMarker3DSymbol simpleMarker3DSymbol = new SimpleMarker3DSymbolClass();
simpleMarker3DSymbol.Style = simple3DMarkerStyle;
simpleMarker3DSymbol.ResolutionQuality = GetResolutionQuality();
IMarkerSymbol markerSymbol = simpleMarker3DSymbol as IMarkerSymbol;
markerSymbol.Color = ColorSelection.GetColor();
markerSymbol.Size = size;
IMarker3DPlacement marker3DPlacement = markerSymbol as IMarker3DPlacement;
SetMarker3DPlacement(marker3DPlacement, markerSymbol.Size);
element.Geometry = geometry;
markerElement.Symbol = markerSymbol;
return element;
}
private double GetResolutionQuality()
{
const double HighQuality = 1.0;
return HighQuality;
}
private void SetMarker3DPlacement(IMarker3DPlacement marker3DPlacement, double size)
{
const double XOffset = 0;
const double YOffset = 0;
marker3DPlacement.XOffset = XOffset;
marker3DPlacement.YOffset = YOffset;
marker3DPlacement.ZOffset = size / 2;
}
private IGlobeGraphicsElementProperties GetElementProperties()
{
IGlobeGraphicsElementProperties elementProperties = new GlobeGraphicsElementPropertiesClass();
elementProperties.DrapeElement = true;
elementProperties.Illuminate = true;
return elementProperties;
}
public IElement Element
{
get
{
return _element;
}
}
public IGlobeGraphicsElementProperties ElementProperties
{
get
{
return _elementProperties;
}
}
}
}
[Visual Basic .NET]
PointElement.vb
Imports Microsoft.VisualBasic
Imports System
Imports ESRI.ArcGIS.Geometry
Imports ESRI.ArcGIS.Carto
Imports ESRI.ArcGIS.Analyst3D
Imports ESRI.ArcGIS.Display
Imports ESRI.ArcGIS.GlobeCore
Namespace GlobeGraphicsToolbar
Public Class PointElement
Private _element As IElement
Private _elementProperties As IGlobeGraphicsElementProperties
Public Sub New(ByVal geometry As IGeometry, ByVal size As Double, ByVal simpleMarkerStyle As ESRI.ArcGIS.Display.esriSimpleMarkerStyle)
_element = GetElement(geometry, size, simpleMarkerStyle)
_elementProperties = GetElementProperties()
End Sub
Public Sub New(ByVal geometry As IGeometry, ByVal size As Double, ByVal simple3DMarkerStyle As ESRI.ArcGIS.Analyst3D.esriSimple3DMarkerStyle)
_element = GetElement(geometry, size, simple3DMarkerStyle)
_elementProperties = GetElementProperties()
End Sub
Private Function GetElement(ByVal geometry As IGeometry, ByVal size As Double, ByVal simpleMarkerStyle As ESRI.ArcGIS.Display.esriSimpleMarkerStyle) As IElement
Dim element As IElement
Dim markerElement As IMarkerElement = New MarkerElementClass()
element = TryCast(markerElement, IElement)
Dim simpleMarkerSymbol As ISimpleMarkerSymbol = New SimpleMarkerSymbolClass()
simpleMarkerSymbol.Style = simpleMarkerStyle
simpleMarkerSymbol.Color = ColorSelection.GetColor()
simpleMarkerSymbol.Size = size
element.Geometry = geometry
markerElement.Symbol = simpleMarkerSymbol
Return element
End Function
Private Function GetElement(ByVal geometry As IGeometry, ByVal size As Double, ByVal simple3DMarkerStyle As ESRI.ArcGIS.Analyst3D.esriSimple3DMarkerStyle) As IElement
Dim element As IElement
Dim markerElement As IMarkerElement = New MarkerElementClass()
element = TryCast(markerElement, IElement)
Dim simpleMarker3DSymbol As ISimpleMarker3DSymbol = New SimpleMarker3DSymbolClass()
simpleMarker3DSymbol.Style = simple3DMarkerStyle
simpleMarker3DSymbol.ResolutionQuality = GetResolutionQuality()
Dim markerSymbol As IMarkerSymbol = TryCast(simpleMarker3DSymbol, IMarkerSymbol)
markerSymbol.Color = ColorSelection.GetColor()
markerSymbol.Size = size
Dim marker3DPlacement As IMarker3DPlacement = TryCast(markerSymbol, IMarker3DPlacement)
SetMarker3DPlacement(marker3DPlacement, markerSymbol.Size)
element.Geometry = geometry
markerElement.Symbol = markerSymbol
Return element
End Function
Private Function GetResolutionQuality() As Double
Const HighQuality As Double = 1.0
Return HighQuality
End Function
Private Sub SetMarker3DPlacement(ByVal marker3DPlacement As IMarker3DPlacement, ByVal size As Double)
Const XOffset As Double = 0
Const YOffset As Double = 0
marker3DPlacement.XOffset = XOffset
marker3DPlacement.YOffset = YOffset
marker3DPlacement.ZOffset = size / 2
End Sub
Private Function GetElementProperties() As IGlobeGraphicsElementProperties
Dim elementProperties As IGlobeGraphicsElementProperties = New GlobeGraphicsElementPropertiesClass()
elementProperties.DrapeElement = True
elementProperties.Illuminate = True
Return elementProperties
End Function
Public ReadOnly Property Element() As IElement
Get
Return _element
End Get
End Property
Public ReadOnly Property ElementProperties() As IGlobeGraphicsElementProperties
Get
Return _elementProperties
End Get
End Property
End Class
End Namespace