|
阅读:1027回复:1
在globecontrol中如何实现identify工具(含代码)
<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> |
|
|
1楼#
发布于:2007-01-27 19:00
<FONT color=#ff0000>(帝国出品,必属精品)</FONT>
|
|