jacky_trd
路人甲
路人甲
  • 注册日期2006-08-03
  • 发帖数1
  • QQ
  • 铜币105枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1027回复:1

在globecontrol中如何实现identify工具(含代码)

楼主#
更多 发布于:2007-01-27 17:16
<P>我想利用ae+vb在globecontrol中实现identify操作,以下是我的代码,出现了两个问题</P>
<P>(一)GlobeControl1.GlobeDisplay.LocateMultiple GlobeControl1.GlobeDisplay.ActiveViewer, x, y, True, True, True, True, ppHits</P>
<P>这句话返回的ppHits总是nothing.</P>
<P>(二)pDisp.FlashLocation pPoint<BR>    pDisp.FlashGeometry pOwner, pObject</P>
<P>这两句话没有用,根本没有闪烁效果</P>
<P>请各位高手帮帮忙吧!!</P>
<P>Dim pScene As IGlobe  ' IScene<BR>Dim pPoint As esriGeometry.IPoint<BR>Dim pIDArray As IArray<BR>Dim pDisp As IDisplay3D                                              '用于设置鼠标点击处的象素大小<BR>Dim pOwner As IUnknown<BR>Dim pObject As IUnknown<BR>Dim ppHits As IHit3DSet</P>
<P>Dim pIdentifyDialogProps As IIdentifyDialogProps<BR>Dim pEnumLayer As IEnumLayer<BR>Dim pLayer As ILayer<BR>Dim pobj As IUnknown<BR>Dim pIddialog As IIdentifyDialog<BR>Dim pHit As IHit3D</P>
<P>Set pScene = GlobeControl1.GlobeDisplay.Globe                       '将显示的图层设为要查询的图层<BR>Set pDisp = GlobeControl1.GlobeViewer.GlobeDisplay </P>
<P>                                                                    '选中了一个feature并将其point写入pPoint中<BR>GlobeControl1.GlobeDisplay.LocateMultiple GlobeControl1.GlobeDisplay.ActiveViewer, x, y, True, True, True, True, ppHits </P>
<P>If ppHits Is Nothing Then<BR>    MsgBox "未选中!", 64, "提示"<BR>    Exit Sub<BR>End If</P>
<P>ppHits.OnePerLayer</P>
<P>Set pIDArray = ppHits.Hits                                         '现在开始使用对话框<BR>Set pIdentifyDialogProps = pIdentifyDialog<BR>Set pIdentifyDialog.BasicMap = pScene                              '设置查询对话框的图层为当前图层<BR>'pIdentifyDialog.HideContextMenu = True<BR>'pIdentifyDialog.HideLayersComboBox = True</P>
<P>Set pIddialog = pIdentifyDialog<BR>pIddialog.ClearLayers                                                '清空原有内容</P>
<P>Dim i As Integer</P>
<P>For i = 0 To pIDArray.Count - 1                                     '循环将被选中对象加到对话框<BR>    Set pHit = pIDArray.Element(i)<BR>    Set pPoint = pHit.Point<BR>    Set pObject = pHit.object<BR>    Set pOwner = pHit.Owner<BR>    pIdentifyDialog.AddLayerIdentifyObject pOwner, pObject, pPoint<BR>    pDisp.FlashLocation pPoint<BR>    pDisp.FlashGeometry pOwner, pObject<BR>Next<BR>pIddialog.Show   </P>
喜欢0 评分0
whmwxhanshan123
路人甲
路人甲
  • 注册日期2006-06-17
  • 发帖数3108
  • QQ
  • 铜币6445枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2007-01-27 19:00
<FONT color=#ff0000>(帝国出品,必属精品)</FONT>
举报 回复(0) 喜欢(0)     评分
游客

返回顶部