阅读:2154回复:2
ae实现类似于arcglobe的identify信息标识工具,如何实现?
<P>我现在想要实现获取鼠标点击处信息的标识工具,类似于arcglobe的identify工具,即能够得到栅格数据的信息又能够得到矢量数据的信息,我是通过工具条上的一个工具实现identify类来实现。部分代码如下,但是调试的时候,当鼠标在globe上点击(已经加载了数据),根本就没有反应,也没有出错信息!请大家帮忙看看,到底有什么问题?</P>
<P>If m_Pidentifytool = True Then<BR> Dim m_Pglobedis As IGlobeDisplay<BR> Dim m_Pscenview As ISceneViewer<BR> Dim m_Pmousepoint As IPoint<BR> Dim m_Powner As IUnknown<BR> Dim m_Pobject As IUnknown<BR> m_Pglobedis = m_Phook.GlobeDisplay<BR> m_Pscenview = m_Phook.Globe<BR> m_Pglobedis.Locate(m_Pscenview, x, y, True, False, m_Pmousepoint, m_Powner, m_Pobject)<BR> Dim m_Pactiview As IActiveView<BR> m_Pactiview = m_Phook.Globe<BR> Dim m_Pidendia As IIdentifyDialog<BR> Dim m_Pidendiapro As IIdentifyDialogProps<BR> Dim m_Pidenlayers As IEnumLayer<BR> Dim m_pidenlayer As ILayer<BR> 'Create a new IdentifyDialog and associate it<BR> 'with the globe and the globedisplay<BR> m_Pidendia = New IdentifyDialog<BR> m_Pidendiapro = m_Pidendia<BR> m_Pidendia.Map = m_Pactiview.FocusMap<BR> m_Pidendia.Display = m_Pactiview.ScreenDisplay<BR> 'Clear the dialog on each mouse click<BR> m_Pidendia.ClearLayers()<BR> m_Pidenlayers = m_Pidendiapro.Layers<BR> m_Pidenlayers.Reset()<BR> m_pidenlayer = m_Pidenlayers.Next<BR> Do While Not m_pidenlayer Is Nothing<BR> m_Pidendia.AddLayerIdentifyPoint(m_pidenlayer, m_Pmousepoint.X, m_Pmousepoint.Y)<BR> m_pidenlayer = m_Pidenlayers.Next<BR> Loop<BR> m_Pidendia.Show()</P> <P>End If</P> |
|
1楼#
发布于:2005-09-27 20:09
注意先把平面坐标(x,y)转换成3d坐标(x,y,z),再利用转换后的点进行查询
|
|
|
2楼#
发布于:2005-11-29 21:37
请问楼主实现了么?要怎么修改呢?谢谢
|
|
|