有不少初学者想知道ArcGIS Engine的GlobeControl中如何实现类似于ArcGlobe里鼠标三维定位的功能,也就是如何获得鼠标点击位置的X,Y,Z。
这个问题要分两个步骤实现,首先是通过IGlobeDisplay.Locate方法获得屏幕坐标的X,Y对应的地理坐标X,Y,第二步是通过地理坐标X,Y求解到地形影响下对应的高程值。
代码如下:
public static IPoint GlobeToDD(IGlobeDisplay globeDisplay, int X, int Y, bool maxResolution)
{
IPoint point;
System.Object objectOwner;
System.Object objectObject;
globeDisplay.Locate(globeDisplay.ActiveViewer, X, Y, false, true, out point, out objectOwner, out objectObject); //获得屏幕坐标的X,Y对应的地理坐标点point
if (point == null)
{
return null;
}
else
{
if (point.IsEmpty == true)
{
return null;
}