阅读:1379回复:1
VC+MapX鹰眼实现 1
<P>在同一个View窗口下家两个CMapX控件,一个称为主图,一个称为鹰眼图。</P>
<P> CMapX m_ctrlMapX; ///主图</P> <P> CMapX m_eagleMapX; ///鹰眼图</P> <P> 注意事项:在View里的OnCreate函数一定要想创建m_eagleMapX,这样才能看见鹰眼图。既如此:</P> <P> m_eagleMapX.Create(NULL, WS_VISIBLE, CRect(0, 0, 120, 120), this, <BR> IDC_MAP_EAGLE);<BR> m_eagleMapX.SetGeoSet(NULL);</P> <P> m_ctrlMapX.Create(NULL, WS_VISIBLE, CRect(0, 0, 100, 100), this, <BR> IDC_MAP);<BR> m_ctrlMapX.SetGeoSet(NULL);</P> <P> 接下来,可以在主图里挑几层加到鹰眼图中(区域图层)</P> <P> 再在消息中映射几个消息:</P> <P> ON_EVENT(CMTRSView, IDC_MAP_EAGLE, DISPID_MOUSEMOVE /* MouseMove */, <BR> onMouseMoveEagleMap, VTS_I2 VTS_I2 VTS_R4 VTS_R4)<BR> ON_EVENT(CMTRSView, IDC_MAP_EAGLE, DISPID_MOUSEDOWN /* MouseDown */, <BR> onMouseDownEagleMap, VTS_I2 VTS_I2 VTS_R4 VTS_R4)<BR> ON_EVENT(CMTRSView, IDC_MAP_EAGLE, DISPID_MOUSEUP /* MouseUp */, <BR> onMouseUpEagleMap, VTS_I2 VTS_I2 VTS_R4 VTS_R4)<BR> 最后实现这几个函数:</P> <P> void CMTRSView:nMouseUpEagleMap(short Button, short Shift, float X, <BR> float Y)<BR> {<BR> ///用户单击导航图上某点的处理<BR> if(strMouseState == "Begin") <BR> {<BR> double dblMapX1, dblMapY1;<BR> ///求出该点的地理坐标<BR> m_eagleMapX.ConvertCoord(;X, ;Y, ;dblMapX1, ;dblMapY1, <BR> miScreenToMap);<BR> ///设置主图的地理坐标<BR> m_ctrlMapX.SetCenterX(dblMapX1);<BR> m_ctrlMapX.SetCenterY(dblMapY1);<BR> }<BR> ///用户在导航图上框出矩形区域时的处理<BR> if(strMouseState == "Move")<BR> {<BR> Single sngXMax, sngXMin, sngYMax, sngYMin;<BR> if(PreX < X) <BR> {<BR> sngXMax = X;<BR> sngXMin = PreX;<BR> }<BR> else<BR> {<BR> sngXMax = PreX;<BR> sngXMin = X;<BR> }</P> <P> if(PreX < Y)<BR> {<BR> sngYMax = Y;<BR> sngYMin = PreY;<BR> }<BR> else<BR> {<BR> sngYMax = PreY;<BR> sngYMin = Y;<BR> }<BR></P> |
|
1楼#
发布于:2007-05-20 19:57
<img src="images/post/smile/dvbbs/em01.gif" />
|
|