dan800913
路人甲
路人甲
  • 注册日期2005-01-10
  • 发帖数102
  • QQ
  • 铜币617枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1320回复:1

ae中globecontrol_onmousemove事件获取三维坐标并在状态栏上显示问题

楼主#
更多 发布于:2005-08-16 20:22
<P>正在用ae和vb.net开发三维可视化界面,想在状态栏中显示鼠标再globecontrol中移动获取的三维坐标信息,试图在axglobecontrol_onmousemove事件中实现,但是e.x和e.y获取的屏幕的pixel坐标,如何将其转换为globe默认的wgs84经纬度坐标呢?</P>
<P>如何再axglobecontrol_onmousemove事件中,获取鼠标移过处的grid的高程坐标数据呢?</P>
<P>请大家帮忙啊!多谢!</P>
喜欢0 评分0
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15951
  • QQ
  • 铜币25345枚
  • 威望15368点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
1楼#
发布于:2005-08-19 12:16
<P>在开发帮助里有</P>LocateMultiple Example'<BR>' Call this method to examine on the 3D Hits in the active viewer.<BR>' For example, from the ArcScene Tools | Customize | Commands | UIControls<BR>' dialog, create a new UIToolControl to allow for mouse clicks, and in the<BR>' UIToolControl's MouseDown event, pass the x and y screen coordinates<BR>' to this method:<BR>'<BR>'  Private Sub UIToolControl_MouseDown(ByVal button As Long, ByVal shift As Long, ByVal x As Long, ByVal y As Long)<BR>'<BR>'    ReportScreenPick x, y<BR>'<BR>'  End Sub<BR>'<BR>Public Sub ReportScreenPick(xScreen As Long, yScreen As Long)  ' local variables:<BR>  Dim x As Long, y As Long<BR>  x = xScreen<BR>  y = yScreen<BR>  <BR>  ' reference ths scenegraph object in the scene:<BR>  Dim pSXDoc As ISxDocument<BR>  Set pSXDoc = ThisDocument<BR>  Dim pSG As ISceneGraph<BR>  Set pSG = pSXDoc.Scene.SceneGraph<BR>  <BR>  ' call the scenegraph's LocateMultiple method for the designated<BR>  ' location in the active viewer:<BR>  Dim pHits As IHit3DSet<BR>  pSG.LocateMultiple pSG.ActiveViewer, x, y, esriScenePickAll, True, pHits<BR>  <BR>  If pHits Is Nothing Then<BR>    MsgBox "No hits were returned."<BR>    Exit Sub<BR>  End If<BR>  <BR>  Dim i As Integer<BR>  Dim pHit As IHit3D<BR>  <BR>  MsgBox pHits.Hits.Count ; " hit(s) were returned - review the output in the VBA Immediate Window."<BR>  Debug.Print pHits.Hits.Count ; " Hit(s) at screen location " ; x ; ", " ; y ; ":"<BR>  <BR>  ' for each hit returned, report on its properties:<BR>  For i = 0 To pHits.Hits.Count - 1<BR>    Set pHit = pHits.Hits.Element(i)<BR>    Debug.Print "Hit " ; i + 1<BR>    With pHit<BR>      If TypeOf .Owner Is ILayer Then<BR>        Dim pLayer As ILayer<BR>        Set pLayer = .Owner<BR>        Debug.Print "  Owner(Layer): " ; pLayer.name<BR>      End If<BR>      <BR>      If Not .Object Is Nothing Then<BR>        If TypeOf .Object Is IFeature Then<BR>          Dim pFeature As IFeature<BR>          Set pFeature = .Object<BR>          Debug.Print "  Feature ID: " ; pFeature.OID<BR>        End If<BR>      End If<BR>      <BR>      Debug.Print "  Distance from the Observer to the Hit point: " ; .DistanceToObserver<BR>      Debug.Print "  Distance between the Hit point and the picking ray: " ; .DistanceToRay<BR>      Debug.Print "  Exact Hit: " ; .ExactHit<BR>      Debug.Print "  Geographic location: " ; .Point.x ; ", " ; .Point.y ; ", " ; .Point.Z<BR>      <BR>      Dim nDepthMin As Double, nDepthMax As Double<BR>      .GetDepthRange nDepthMin, nDepthMax<BR>      Debug.Print "  OpenGL Depth Range: " ; nDepthMin ; " - " ; nDepthMax<BR>      <BR>    End With<BR>    <BR>  NextEnd Sub<BR>
GIS麦田守望者,期待与您交流。
举报 回复(0) 喜欢(0)     评分
游客

返回顶部