About the Creating a toolbar of globe tools Sample
[C#]
PointTool.cs
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using ESRI.ArcGIS.Geometry;
using ESRI.ArcGIS.GlobeCore;
using ESRI.ArcGIS.Analyst3D;
using ESRI.ArcGIS.Carto;
namespace GlobeGraphicsToolbar
{
public class PointTool : ESRI.ArcGIS.Desktop.AddIns.Tool
{
private const int LeftButton = 1;
private const esriSRGeoCSType GeographicCoordinateSystem = esriSRGeoCSType.esriSRGeoCS_WGS1984;
private const double PointElementSize = 100000;
private const esriSimple3DMarkerStyle PointElementStyle = esriSimple3DMarkerStyle.esriS3DMSSphere;
private const string GraphicsLayerName = "Globe Graphics";
public PointTool()
{
}
protected override void OnUpdate()
{
Enabled = ArcGlobe.Application != null;
}
protected override void OnMouseUp(ESRI.ArcGIS.Desktop.AddIns.Tool.MouseEventArgs arg)
{
if (arg.Button == System.Windows.Forms.MouseButtons.Left)
{
GeographicCoordinates geographicCoordinates = new GeographicCoordinates(ArcGlobe.Globe, arg.X, arg.Y);
SpatialReferenceFactory spatialReferenceFactory = new SpatialReferenceFactory((int)GeographicCoordinateSystem);
PointGeometry pointGeometry = new PointGeometry(geographicCoordinates.Longitude, geographicCoordinates.Latitude, geographicCoordinates.AltitudeInKilometers, spatialReferenceFactory.SpatialReference);
PointElement pointElement = new PointElement(pointGeometry.Geometry, PointElementSize, PointElementStyle);
TableOfContents tableOfContents = new TableOfContents(ArcGlobe.Globe);
if (!tableOfContents.LayerExists(GraphicsLayerName))
{
tableOfContents.ConstructLayer(GraphicsLayerName);
}
Layer layer = new Layer(tableOfContents[GraphicsLayerName]);
layer.AddElement(pointElement.Element, pointElement.ElementProperties);
ArcGlobe.Globe.GlobeDisplay.RefreshViewers();
}
}
}
}
[Visual Basic .NET]
PointTool.vb
Imports Microsoft.VisualBasic
Imports System
Imports System.Collections.Generic
Imports System.Text
Imports System.IO
Imports ESRI.ArcGIS.Geometry
Imports ESRI.ArcGIS.GlobeCore
Imports ESRI.ArcGIS.Analyst3D
Imports ESRI.ArcGIS.Carto
Namespace GlobeGraphicsToolbar
Public Class PointTool
Inherits ESRI.ArcGIS.Desktop.AddIns.Tool
Private Const LeftButton As Integer = 1
Private Const GeographicCoordinateSystem As ESRI.ArcGIS.Geometry.esriSRGeoCSType = ESRI.ArcGIS.Geometry.esriSRGeoCSType.esriSRGeoCS_WGS1984
Private Const PointElementSize As Double = 100000
Private Const PointElementStyle As esriSimple3DMarkerStyle = esriSimple3DMarkerStyle.esriS3DMSSphere
Private Const GraphicsLayerName As String = "Globe Graphics"
Public Sub New()
End Sub
Protected Overrides Sub OnUpdate()
Enabled = ArcGlobe.Application IsNot Nothing
End Sub
Protected Overrides Sub OnMouseUp(ByVal arg As ESRI.ArcGIS.Desktop.AddIns.Tool.MouseEventArgs)
If arg.Button = System.Windows.Forms.MouseButtons.Left Then
Dim geographicCoordinates As New GeographicCoordinates(ArcGlobe.Globe, arg.X, arg.Y)
Dim spatialReferenceFactory As New SpatialReferenceFactory(CInt(Fix(GeographicCoordinateSystem)))
Dim pointGeometry As New PointGeometry(geographicCoordinates.Longitude, geographicCoordinates.Latitude, geographicCoordinates.AltitudeInKilometers, spatialReferenceFactory.SpatialReference)
Dim pointElement As New PointElement(pointGeometry.Geometry, PointElementSize, PointElementStyle)
Dim tableOfContents As New TableOfContents(ArcGlobe.Globe)
If (Not tableOfContents.LayerExists(GraphicsLayerName)) Then
tableOfContents.ConstructLayer(GraphicsLayerName)
End If
Dim layer As New Layer(tableOfContents(GraphicsLayerName))
layer.AddElement(pointElement.Element, pointElement.ElementProperties)
ArcGlobe.Globe.GlobeDisplay.RefreshViewers()
End If
End Sub
End Class
End Namespace