diff --git a/GISDlg.cpp b/GISDlg.cpp index d620e54..e11b9c2 100644 --- a/GISDlg.cpp +++ b/GISDlg.cpp @@ -2579,6 +2579,12 @@ void CGISDlg::MouseDownMap1(short Button, short Shift, long x, long y) break; case 2: { + if (m_CircleGuideLayer>=0) + { + m_map.ClearDrawing(m_CircleGuideLayer); + m_CircleGuideLayer = -1; + } + CCircleGuidence circleGuidenceDlg; if (IDOK == circleGuidenceDlg.DoModal()) { @@ -2589,12 +2595,19 @@ void CGISDlg::MouseDownMap1(short Button, short Shift, long x, long y) double radius = circleGuidenceDlg.g_radius/abs(2*M_PI*6371000*cos(m_guidePtInfo.guidePtLat*M_PI/180)/360); -/* - double oneUnit[1] = {1}; - CUtils utilsPtr; - bool b = utilsPtr.ConvertDistance(mapWindow::tkUnitsOfMeasure::umMeters,mapWindow::tkUnitsOfMeasure::umKilometers,oneUnit);*/ m_map.DrawWideCircleEx(m_CircleGuideLayer,m_guidePtInfo.guidePtLon,m_guidePtInfo.guidePtLat,radius,RGB(248,252,55),false,2); m_map.Redraw(); + + //×°¶© + m_struMapOut.cmd = MapCmd_Guide2; + m_struMapOut.lon = m_guidePtInfo.guidePtLon; + m_struMapOut.lat = m_guidePtInfo.guidePtLat; + + m_struMapOut.height = circleGuidenceDlg.g_alt; + m_struMapOut.radius = circleGuidenceDlg.g_radius; + m_struMapOut.direction = circleGuidenceDlg.g_direction; + + ::SendMessage(GetParent()->GetSafeHwnd(),MESSAGE_B8MAP, (int)(&m_struMapOut),0); } else { @@ -2610,16 +2623,6 @@ void CGISDlg::MouseDownMap1(short Button, short Shift, long x, long y) //OnRemoveGuidePtDraw(); return; } - - m_struMapOut.cmd = MapCmd_Guide2; - m_struMapOut.lon = m_guidePtInfo.guidePtLon; - m_struMapOut.lat = m_guidePtInfo.guidePtLat; - - m_struMapOut.height = circleGuidenceDlg.g_alt; - m_struMapOut.radius = circleGuidenceDlg.g_radius; - m_struMapOut.direction = circleGuidenceDlg.g_direction; - - ::SendMessage(GetParent()->GetSafeHwnd(),MESSAGE_B8MAP, (int)(&m_struMapOut),0); } break; default: @@ -4739,6 +4742,8 @@ void CGISDlg::OnGuideMode2() return; } + m_map.SetCursorMode(mapWindow::tkCursorMode::cmNone); + m_guidePtInfo.guideMode = 2; m_guidePointMode = 2;