From c1e02ae88a67640fc8d7a7ab12c1528ea4b91f0c Mon Sep 17 00:00:00 2001 From: zhaipx Date: Thu, 9 Nov 2023 14:14:07 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E9=AB=98=E7=A8=8B=E5=88=86=E6=9E=90bug?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- GISDlg.cpp | 64 +++++++++++++++++++++--------------------------------- 1 file changed, 25 insertions(+), 39 deletions(-) diff --git a/GISDlg.cpp b/GISDlg.cpp index fc1f817..f2ca033 100644 --- a/GISDlg.cpp +++ b/GISDlg.cpp @@ -2744,9 +2744,10 @@ void CGISDlg::MouseMoveMap1(short Button, short Shift, long x, long y) //标注距离和方位 AddPointShapeLayer(m_longLabelPlotID,_ptLon, _ptLat, str, _T("红色"), RGB(255,0,0)); } - + // 高程分析选点移动时 if (g_bDemAnalysising && g_iDemPointNum>=1) { + return; double lon = 0, lat = 0; m_map.PixelToProj(x, y, &lon, &lat); @@ -2765,8 +2766,8 @@ void CGISDlg::MouseMoveMap1(short Button, short Shift, long x, long y) AddOnePoint2Shapfile(g_lDemAltLayerID[g_iDemPointNum-1], 1, g_dDemPtLon[g_iDemPointNum-1], g_dDemPtLat[g_iDemPointNum-1]); AddOnePoint2Shapfile(g_lDemAltLayerID[g_iDemPointNum-1], 1, lon, lat); - //显示线段的距离和方位 - DrawLineLabel(g_lDemAltDisLayerID[g_iDemPointNum-1], g_dDemPtLon[g_iDemPointNum-1], g_dDemPtLat[g_iDemPointNum-1], lon, lat); + //显示线段的距离和方位(绘制标注) + DrawLineLabel(g_lDemAltLayerID[g_iDemPointNum-1], g_dDemPtLon[g_iDemPointNum-1], g_dDemPtLat[g_iDemPointNum-1], lon, lat); } } @@ -2823,20 +2824,17 @@ void CGISDlg::AddTextToPointShapeLayer(long &drawLayerID, const double lon, cons m_map.Redraw(); } -//功能:显示两点所连线段的距离和方位 +//功能:显示两点所连线段的距离和方位标注(Label) +// drawLayerID 绘制标注的图层ID +// ptLon1, ptLat1 第一个点的经纬度 +// ptLon2, ptLat2 第二个点的经纬度 void CGISDlg::DrawLineLabel(long &drawLayerID, const double ptLon1, const double ptLat1, const double ptLon2, const double ptLat2) { - //没有加载地图,返回 - if (!m_bHaveAddMap) - { - return; - } - + double _dis, _angle; CalculateTwoPtsDistanceAzimuth(_dis, _angle, ptLon1, ptLat1, ptLon2, ptLat2, 3); CString str = _T(""); - if ( _dis < 1000) { str.Format(_T("%.1fm/%.1f°"), _dis, _angle); @@ -2852,33 +2850,17 @@ void CGISDlg::DrawLineLabel(long &drawLayerID, const double ptLon1, const double //计算标注点坐标 TargetPos2LabelPos(textLon, textLat, (ptLon1 + ptLon2)/2, (ptLat1 + ptLat2)/2); - - //判断点矢量图层是否已经存在,存在则删除 - if (drawLayerID > 0) - { - //清除标绘的点矢量图层 - ClearPointShape(drawLayerID); - drawLayerID = -1; - } - - if (_T("") != str) - { - //创建点图层 - CreateEmptyShapfile(drawLayerID, 0, RGB(255,0,0)); //红色 - - //Label集合 - CLabels labesPtr; - labesPtr = (m_map.GetShapefile(drawLayerID)).GetLabels(); - - CLabelCategory labelCategory = labesPtr.AddCategory(_T("")); - labelCategory.SetFontColor(RGB(255,255,0)); - labelCategory.SetAlignment(1); - labelCategory.SetFontBold(TRUE); - labelCategory.SetFontName(_T("Times New Roman")); - labelCategory.SetFontSize(10); - - //labesPtr.AddLabel(str, textLon, textLat, 0, 0); - } + TRACE(str); + //Label集合 + CLabels labesPtr; + labesPtr = (m_map.GetShapefile(drawLayerID)).GetLabels(); + CLabelCategory labelCategory = labesPtr.AddCategory(_T("")); + labelCategory.SetFontColor(RGB(255,255,0)); + labelCategory.SetAlignment(1); + labelCategory.SetFontBold(TRUE); + labelCategory.SetFontName(_T("Times New Roman")); + labelCategory.SetFontSize(10); + // labesPtr.AddLabel(str, textLon, textLat, 0, 0); //重绘 m_map.Redraw(); @@ -6454,13 +6436,17 @@ afx_msg LRESULT CGISDlg::OnZoomToLocation(WPARAM wParam, LPARAM lParam) return 0; } +// 右键菜单-高程分析-高程分析 void CGISDlg::OnMenuLightRegion() { /*if (m_dlgLightRegion.GetSafeHwnd()) { m_dlgLightRegion.ShowWindow(TRUE); }*/ - + if(!m_bHaveAddMap){ + AfxMessageBox( _T( "请先加载地图!")); + return; + } g_bDemAnalysising = true; g_iDemPointNum = 0; } From 82b3161226eb534adf669ec34e7bab94157a6f09 Mon Sep 17 00:00:00 2001 From: zhaipx Date: Thu, 9 Nov 2023 17:34:45 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E9=AB=98=E7=A8=8B?= =?UTF-8?q?=E5=88=86=E6=9E=90=E5=B4=A9=E6=BA=83bug=EF=BC=8C=E5=B9=B6?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=B7=9D=E7=A6=BB=E8=88=AA=E5=90=91=E6=A0=87?= =?UTF-8?q?=E6=B3=A8=E6=A0=B7=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- GISDlg.cpp | 45 ++++++++------------------------------------- 1 file changed, 8 insertions(+), 37 deletions(-) diff --git a/GISDlg.cpp b/GISDlg.cpp index daba843..b18a768 100644 --- a/GISDlg.cpp +++ b/GISDlg.cpp @@ -2803,10 +2803,9 @@ void CGISDlg::MouseMoveMap1(short Button, short Shift, long x, long y) //标注距离和方位 AddPointShapeLayer(m_longLabelPlotID,_ptLon, _ptLat, str, _T("红色"), RGB(255,0,0)); } - + //高程分析时 if (g_bDemAnalysising && g_iDemPointNum>=1 ) { - return; double lon = 0, lat = 0; m_map.PixelToProj(x, y, &lon, &lat); @@ -2819,7 +2818,7 @@ void CGISDlg::MouseMoveMap1(short Button, short Shift, long x, long y) m_map.RemoveLayer(g_lDemAltLayerID[g_iDemPointNum-1]); //创建线图层 - CreateEmptyShapfile(g_lDemAltLayerID[g_iDemPointNum-1], 1, RGB(0,0,255)); + CreateEmptyShapfile(g_lDemAltLayerID[g_iDemPointNum-1], 1, RGB(255,255,255)); //绘制线段 AddOnePoint2Shapfile(g_lDemAltLayerID[g_iDemPointNum-1], 1, g_dDemPtLon[g_iDemPointNum-1], g_dDemPtLat[g_iDemPointNum-1]); @@ -2827,14 +2826,7 @@ void CGISDlg::MouseMoveMap1(short Button, short Shift, long x, long y) //显示线段的距离和方位(绘制标注) DrawLineLabel(g_lDemAltLayerID[g_iDemPointNum-1], g_dDemPtLon[g_iDemPointNum-1], g_dDemPtLat[g_iDemPointNum-1], lon, lat); - //显示线段的距离和方位 -/* - if (g_lDemAltDisLayerID[g_iDemPointNum-1]!=-1) - { - m_map.ClearDrawing(g_lDemAltDisLayerID[g_iDemPointNum-1]); - } - g_lDemAltDisLayerID[g_iDemPointNum-1] = m_map.NewDrawing(1);*/ - //DrawLineLabel(g_lDemAltDisLayerID[g_iDemPointNum-1], g_dDemPtLon[g_iDemPointNum-1], g_dDemPtLat[g_iDemPointNum-1], lon, lat); + } } @@ -2897,7 +2889,6 @@ void CGISDlg::AddTextToPointShapeLayer(long &drawLayerID, const double lon, cons // ptLon2, ptLat2 第二个点的经纬度 void CGISDlg::DrawLineLabel(long &drawLayerID, const double ptLon1, const double ptLat1, const double ptLon2, const double ptLat2) { - double _dis, _angle; CalculateTwoPtsDistanceAzimuth(_dis, _angle, ptLon1, ptLat1, ptLon2, ptLat2, 3); @@ -2918,42 +2909,22 @@ void CGISDlg::DrawLineLabel(long &drawLayerID, const double ptLon1, const double //计算标注点坐标 TargetPos2LabelPos(textLon, textLat, (ptLon1 + ptLon2)/2, (ptLat1 + ptLat2)/2); - //判断点矢量图层是否已经存在,存在则删除 - if (drawLayerID > 0) - { - //清除标绘的点矢量图层 - ClearPointShape(drawLayerID); - drawLayerID = -1; - } - if (_T("") != str) { - //创建点图层 - CreateEmptyShapfile(drawLayerID, 0, RGB(255,0,0)); //红色 - //Label集合 CLabels labesPtr; labesPtr = (m_map.GetShapefile(drawLayerID)).GetLabels(); - //labesPtr = m_map.GetDrawingLabels(drawLayerID); - labesPtr.SetFontColor(RGB(255,255,0)); + labesPtr.SetFontColor(RGB(255,127,0)); + labesPtr.SetFrameTransparency(0); labesPtr.SetAlignment(1); labesPtr.SetFontBold(TRUE); labesPtr.SetFontName(_T("Times New Roman")); - labesPtr.SetFontSize(10); - - //CLabelCategory labelCategory = labesPtr.AddCategory(_T("")); -/* - labelCategory.SetFontColor(RGB(255,255,0)); - labelCategory.SetAlignment(1); - labelCategory.SetFontBold(TRUE); - labelCategory.SetFontName(_T("Times New Roman")); - labelCategory.SetFontSize(10);*/ - - //labesPtr.AddLabel(str, textLon, textLat, 0, 0); + labesPtr.SetFontSize(15); + labesPtr.put_FontSize2(15); + labesPtr.AddLabel(str, textLon, textLat, 0, 0); } - //重绘 m_map.Redraw(); }