Zooms to the specified bookmark in the globe.
[C#]
///<summary>Zooms to the specified bookmark in the globe.</summary>
///
///<param name="globe">An IGlobe interface</param>
///<param name="bookmarkName">A System.String that is the name of the bookmark, you want to zoom to. Example: "Bookmark 1"</param>
///
///<remarks></remarks>
public void ZoomTo3DBookmark(ESRI.ArcGIS.GlobeCore.IGlobe globe, System.String bookmarkName)
{
ESRI.ArcGIS.GlobeCore.IGlobeDisplay globeDisplay = globe.GlobeDisplay;
ESRI.ArcGIS.Analyst3D.ISceneViewer sceneViewer = globeDisplay.ActiveViewer;
ESRI.ArcGIS.Analyst3D.ICamera camera = sceneViewer.Camera;
ESRI.ArcGIS.GlobeCore.IGlobeCamera globeCamera = (ESRI.ArcGIS.GlobeCore.IGlobeCamera)camera; // Explicit Cast
ESRI.ArcGIS.Analyst3D.IScene scene = globeDisplay.Scene;
ESRI.ArcGIS.Analyst3D.ISceneBookmarks sceneBookmarks = (ESRI.ArcGIS.Analyst3D.ISceneBookmarks)scene; // Explicit Cast
// The next 2 lines of code are different from many other ArcObjects programming techniques in that the IBookmark3D
// Interface variable 'bookmark3D' is initialized to a Null value. It is set by reference with the call to the
// FindBookmark method; hence the need for the 'out' argument (see MSDN for more information).
ESRI.ArcGIS.Analyst3D.IBookmark3D bookmark3D; // Initialized to Null
sceneBookmarks.FindBookmark(bookmarkName, out bookmark3D);
bookmark3D.Apply(sceneViewer, false, 0);
// The next 3 lines of code are different from many other ArcObjects programming techniques in that the
// double variables of pXT and pYT are initialized to zero by the compiler. These variables are later set to
// non zero values by a call to the QueryCoords method; hence the need for the 'out' arguments (see
// MSDN for more information).
System.Double pXT; // Initialized To 0 by default
System.Double pYT; // Initialized To 0 by default
camera.Target.QueryCoords(out pXT, out pYT);
System.Double pZT; // Initialized To 0 by default
pZT = camera.Target.Z;
if ((pXT * pXT + pYT * pYT + pZT * pZT) < 0.000000000001)
globeCamera.OrientationMode = ESRI.ArcGIS.GlobeCore.esriGlobeCameraOrientationMode.esriGlobeCameraOrientationGlobal;
else
globeCamera.OrientationMode = ESRI.ArcGIS.GlobeCore.esriGlobeCameraOrientationMode.esriGlobeCameraOrientationLocal;
sceneViewer.Redraw(true);
}
[Visual Basic .NET]
'''<summary>Zooms to the specified bookmark in the globe.</summary> ''' '''<param name="globe">An IGlobe interface</param> '''<param name="bookmarkName">A System.String that is the name of the bookmark, you want to zoom to. Example: "Bookmark 1"</param> ''' '''<remarks></remarks> Public Sub ZoomTo3DBookmark(ByVal globe As ESRI.ArcGIS.GlobeCore.IGlobe, ByVal bookmarkName As System.String) Dim globeDisplay As ESRI.ArcGIS.GlobeCore.IGlobeDisplay = globe.GlobeDisplay Dim sceneViewer As ESRI.ArcGIS.Analyst3D.ISceneViewer = globeDisplay.ActiveViewer Dim camera As ESRI.ArcGIS.Analyst3D.ICamera = sceneViewer.Camera Dim globeCamera As ESRI.ArcGIS.GlobeCore.IGlobeCamera = CType(camera, ESRI.ArcGIS.GlobeCore.IGlobeCamera) ' Explict Cast Dim scene As ESRI.ArcGIS.Analyst3D.IScene = globeDisplay.Scene Dim sceneBookmarks As ESRI.ArcGIS.Analyst3D.ISceneBookmarks = CType(scene, ESRI.ArcGIS.Analyst3D.ISceneBookmarks) ' Explicit Cast ' The next 2 lines of code are different from many other ArcObjects programming techniques in that the IBookmark3D ' Interface variable 'bookmark3D' is initialized to Nothing. It is set by reference with the call to the ' FindBookmark method. Dim bookmark3D As ESRI.ArcGIS.Analyst3D.IBookmark3D = Nothing sceneBookmarks.FindBookmark(bookmarkName, bookmark3D) bookmark3D.Apply(sceneViewer, False, 0) ' The next 3 lines of code are different from many other ArcObjects programming techniques in that the ' double variables of pXT and pYT need to initialized to zero. These variables are later set to ' non zero values by a call to the QueryCoords method. Dim pXT As System.Double = 0 Dim pYT As System.Double = 0 camera.Target.QueryCoords(pXT, pYT) Dim pZT As System.Double pZT = camera.Target.Z If (pXT * pXT + pYT * pYT + pZT * pZT) < 0.000000000001 Then globeCamera.OrientationMode = ESRI.ArcGIS.GlobeCore.esriGlobeCameraOrientationMode.esriGlobeCameraOrientationGlobal Else globeCamera.OrientationMode = ESRI.ArcGIS.GlobeCore.esriGlobeCameraOrientationMode.esriGlobeCameraOrientationLocal End If sceneViewer.Redraw(True) End Sub