You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

7369 lines
203 KiB
C++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

// GISDlg.cpp : implementation file
//
#include "stdafx.h"
#include "GISDlg.h"
#include <math.h>
#include "label.h"
//#include <atlimage.h>
#include "shapedrawingoptions.h"
#include "shape.h"
#include "labelcategory.h"
#include "ScreenCapture.h"
#include "SetSaveLineID.h"
//#include "8BMapDLL_type.h"
#include <fstream>
#include <sstream>
#include <iostream>
#include "vectortoraster.h"
#include "SaveLineEditSetting.h"
#include "ModifyLinePointDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CGISDlg dialog
const double DEG2RAD = 0.017453292519943295769236907684886127134428718885417;
DWORD LineClr[15] = {RGB(0,255,0),RGB(255,0,0), RGB(0,0,255),RGB(128,128,0), RGB(0,0,0),RGB(0,255,0),RGB(255,0,0), RGB(0,0,255),RGB(128,128,0), RGB(0,0,0),RGB(0,255,0),RGB(255,0,0), RGB(0,0,255),RGB(124,252,0/*127,255,170*/), RGB(0,0,0)};
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>
void FAR PASCAL CatchMTimerDraw(WORD IDEvent, WORD uReserved, DWORD dwUser,DWORD dwReserved1,DWORD dwReserve2)
{
::PostMessage(g_mapHwnd, WM_SEND_DRAWUAV, FALSE, 0);
}
CGISDlg::CGISDlg(CWnd* pParent /*=NULL*/)
: CBCGPDialog(CGISDlg::IDD, pParent)
{
EnableVisualManagerStyle(TRUE, TRUE);
//{{AFX_DATA_INIT(CGISDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
m_MsgHwnd = NULL;
m_MsgID = 0; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϢID
m_LineLoadMsgID=0; //װ<><D7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_drawPlanFlyLine = -1;
//<2F><>γ<EFBFBD>ȶԻ<C8B6><D4BB><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>ʶ
m_bHaveShowLonLatDlg = false;
//<2F>º<EFBFBD><C2BA><EFBFBD><EFBFBD><EFBFBD>ƶԻ<C6B6><D4BB><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>ʶ
m_bHaveShowLineDesign = false;
//2<><32>֮<EFBFBD><D6AE><EFBFBD>ˮƽ<CBAE><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD>ı<EFBFBD>ʶ
m_bHaveShowDistanceDlg = false;
//<2F>Ƿ<EFBFBD><C7B7>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD>ͼ
m_bHaveAddMap = false;
for (int i = 0;i<3;i++)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>ID
m_flyTrackLayerID[i] = -1;
//UAV<41><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>ID
m_UAVFlyTrackLayerID[i] = -1;
//<2F>Ƿ<EFBFBD><C7B7>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><CBBB>ķ<EFBFBD><C4B7>й켣
m_bFirstDrawUAVTrack[i] = false;
m_drawTrackPtNum[i] = 0;
}
//
for (int i = 0;i<MAX_PLANE_NUM_ADS;i++)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>ID
//m_flyTrackLayerID[i] = -1;
//UAV<41><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>ID
m_UAVFlyTrackLayerID_ADS[i] = -1;
m_bWithin100km_ADS[i] = false;
}
m_iCurrentADSid = 0;
m_iTotalADSnum = 0;
//<2F><>ͼ<EFBFBD><CDBC>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>߶ȵ<DFB6><C8B5><EFBFBD>
m_onePerWidth = 0;
m_onePerHeight = 0;
m_mapAreaHalfWidth = 0;
m_mapAreaHalfHeight = 0;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
m_bLineDesign = false;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĺ<EFBFBD><C4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_ptNum = 18;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
memset(m_ppUavPtArray,0,sizeof(double)*18*2);
memset(m_ppUavPtArray_ADS,0,sizeof(double)*18*2);
m_ptPlane[0] = CPoint(0, -13);
m_ptPlane[1] = CPoint(2, -9);
m_ptPlane[2] = CPoint(2, -6);
m_ptPlane[3] = CPoint(12, 4);
m_ptPlane[4] = CPoint(12, 6);
m_ptPlane[5] = CPoint(2, 2);
m_ptPlane[6] = CPoint(1, 10);
m_ptPlane[7] = CPoint(3, 12);
m_ptPlane[8] = CPoint(3, 13);
m_ptPlane[9] = CPoint(0, 13);
m_ptPlane[10] = CPoint(-3, 13);
m_ptPlane[11] = CPoint(-3, 12);
m_ptPlane[12] = CPoint(-1, 10);
m_ptPlane[13] = CPoint(-2, 2);
m_ptPlane[14] = CPoint(-12, 6);
m_ptPlane[15] = CPoint(-12, 4);
m_ptPlane[16] = CPoint(-2, -6);
m_ptPlane[17] = CPoint(-2, -9);
m_ptPlane_ADS[0] = CPoint(0, -13);
m_ptPlane_ADS[1] = CPoint(2, -9);
m_ptPlane_ADS[2] = CPoint(2, -6);
m_ptPlane_ADS[3] = CPoint(12, 4);
m_ptPlane_ADS[4] = CPoint(12, 6);
m_ptPlane_ADS[5] = CPoint(2, 2);
m_ptPlane_ADS[6] = CPoint(1, 10);
m_ptPlane_ADS[7] = CPoint(3, 12);
m_ptPlane_ADS[8] = CPoint(3, 13);
m_ptPlane_ADS[9] = CPoint(0, 13);
m_ptPlane_ADS[10] = CPoint(-3, 13);
m_ptPlane_ADS[11] = CPoint(-3, 12);
m_ptPlane_ADS[12] = CPoint(-1, 10);
m_ptPlane_ADS[13] = CPoint(-2, 2);
m_ptPlane_ADS[14] = CPoint(-12, 6);
m_ptPlane_ADS[15] = CPoint(-12, 4);
m_ptPlane_ADS[16] = CPoint(-2, -6);
m_ptPlane_ADS[17] = CPoint(-2, -9);
//<2F><>ͼ<EFBFBD><CDBC>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͻ<EFBFBD>X<EFBFBD><58><EFBFBD><EFBFBD>
m_leftTopX = 0;
//<2F><>ͼ<EFBFBD><CDBC>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͻ<EFBFBD>Y<EFBFBD><59><EFBFBD><EFBFBD>
m_leftTopY = 0;
//Ŀ<><C4BF><EFBFBD><EFBFBD>SHPͼ<50><CDBC>ID<49><44>
m_targetPtShapeID = 0;
//<2F>Ƿ<EFBFBD><C7B7>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>SHPĿ<50><C4BF><EFBFBD>עͼ<D7A2><CDBC>
m_bHaveCreateTargetShp = false;
//<2F><>עƫ<D7A2><C6AB><EFBFBD><EFBFBD>
m_labelWarpValue = 15;
//<2F>ܹ<EFBFBD><DCB9><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_totalPointNum = 512;
//<2F>º<EFBFBD><C2BA><EFBFBD><EFBFBD><EFBFBD>Ƶĺ<C6B5><C4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2016.01.06
m_MaxNumofLinePt = 255;
// m_pNewDesignLineStruct = new tmpPT[m_MaxNumofLinePt]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// memset(m_pNewDesignLineStruct, 0, sizeof(tmpPT)*m_MaxNumofLinePt); //<2F><>ʼ<EFBFBD><CABC>
m_pNewDesignLineStruct = new PtStruct[m_MaxNumofLinePt]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
memset(m_pNewDesignLineStruct, 0, sizeof(PtStruct)*m_MaxNumofLinePt); //<2F><>ʼ<EFBFBD><CABC>
m_NowNumLineDesign = 0; //<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD>
m_lineMaxPointNum = 255; //һ<><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĺ<EFBFBD><C4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_pDesignLineStruct = new PtStruct[m_lineMaxPointNum]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
memset(m_pDesignLineStruct, 0, sizeof(PtStruct)*m_lineMaxPointNum); //<2F><>ʼ<EFBFBD><CABC>
m_designLinePointNum = 0; //<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD>߱<EFBFBD><DFB1>ͼ<EFBFBD><CDBC>ID<49><44>ʼ<EFBFBD><CABC>
m_designLineLayerID = -1;
m_designLineLayerID2 = -1;
//Ŀ<><C4BF><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD>ID<49><44>
m_targetDrawLayerID = -1;
//<2F><>ʱ<EFBFBD><CAB1><EFBFBD>ͼ<EFBFBD><CDBC>
m_tempLayerID = -1;
/****************<2A><><EFBFBD><EFBFBD><<3C><EFBFBD><E0BCAD><EFBFBD><EFBFBD>><3E><><EFBFBD><EFBFBD>***********************************/
/*****by Wu 2023.09.11*******/
//ѡ<>и<EFBFBD><D0B8><EFBFBD>ͼ<EFBFBD><CDBC>
m_highLightLineLayerID = -1;
//<2F><><EFBFBD>ε<EFBFBD>ͼ<EFBFBD><CDBC>
m_tempTerrainPointsLayerID = -1;
m_tempshpPointLayerID = -1;
m_tempshpLineLayerID = -1;
//<2F><EFBFBD><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID
circlingPointID = -1;
m_lineSelectedID = -1;
GLOBAL_X = 0;
GLOBAL_Y = 0;
//<2F><EFBFBD><E0BCAD><EFBFBD>պ<EFBFBD><D5BA><EFBFBD>״̬
m_bEditLine = false;
//<2F><><EFBFBD>պ<EFBFBD><D5BA><EFBFBD><EFBFBD><EFBFBD>ʾ״̬
//m_bShowBackLine = false;
//<2F><>ק<EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD>־
m_dragFlag = false;
// ѡ<><D1A1>ģʽ
m_bSelectFeatureFlag = false;
//
m_KTPtShpLayerID = -1; //<2F><>Ͷ<EFBFBD><CDB6>ͼ<EFBFBD><CDBC>
//m_pDesignKTLineDlg = NULL;
/****************/
/*****By Wu 2023.10.16********/
m_distLabelLayer = -1; //<2F>༭ʱ<E0BCAD><CAB1>ʾ<EFBFBD><CABE>λ<EFBFBD>Ǻ;<C7BA><CDBE><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
m_bPolylineMeasure = false; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
m_numPolylineMeasurePts = 0; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_bMeasureDrag = false; //<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD>ͼ<EFBFBD><CDBC>
m_polylineMeasureLineLayerID = -1;
//<2F><>ע<EFBFBD><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>ͼ<EFBFBD><CDBC>
m_polylineMeasureLabelLayerID = -1;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD>ŵı<C5B5>עͼ<D7A2><CDBC>
m_polylineMeasurePtLayerID[0] = -1;
m_polylineMeasurePtLayerID[1] = -1;
/************************************************************/
//<2F><>ʶ<EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>ʱͼ<CAB1><CDBC><EFBFBD>Ͻ<EFBFBD><CFBD>б<EFBFBD>ע
m_beTemLayerDrawing = true;
//<2F><>ǰ<EFBFBD><C7B0>Ƶĺ<C6B5><C4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
memset(&m_curDesignPoint, 0, sizeof(PtStruct));
//<2F>Ƿ<EFBFBD><C7B7>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µĺ<C2B5><C4BA><EFBFBD>
m_bAddNewPoint = false;
int i = 0;
int j = 0;
//////////////////<2F><EFBFBD><EBBABD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/////////////////////
m_totalFlyLines = 14; //<2F>ܵķ<DCB5><C4B7>к<EFBFBD><D0BA><EFBFBD><EFBFBD><EFBFBD>ԭ5<D4AD><35>Ϊ14 20221121
DrawLineDataStruct m_pFlyLines[14]; //<2F><><EFBFBD>к<EFBFBD><D0BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ԭ5 <20><>Ϊ12
memset(m_pFlyLines, 0, sizeof(DrawLineDataStruct)*m_totalFlyLines);
m_flyLineNum = 0; //<2F><><EFBFBD>к<EFBFBD><D0BA><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD>к<EFBFBD><D0BA>߱<EFBFBD>ע<EFBFBD><D7A2>
m_flyLinesLayerID = -1;
//<2F>Ƿ<EFBFBD><C7B7>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><CBBB><EFBFBD><EFBFBD><EFBFBD>Shp<68><70>ͼ<EFBFBD><CDBC>
m_bHaveCreateUAVShpLayer = false;
//<2F><><EFBFBD>˻<EFBFBD><CBBB><EFBFBD><EFBFBD><EFBFBD>Shp<68><70>ͼ<EFBFBD><CDBC>ID
m_uavShapileLayerID = -1;
//<2F><><EFBFBD>߱<EFBFBD><DFB1>ͼ<EFBFBD><CDBC><EFBFBD>Shpͼ<70><CDBC>ID<49><44><EFBFBD>飬ÿ<E9A3AC><C3BF><EFBFBD><EFBFBD><EFBFBD>߾<EFBFBD><DFBE><EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD>㣺1<E3A3BA><31>ͼ<EFBFBD><CDBC>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><E3A1A2>һ<EFBFBD><D2BB>ͼ<EFBFBD><CDBC>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>//5<><35>Ϊ8 20221121
long m_ppPlanLineShpLayerIDArr[14][2];
for (i=0; i<14; i++)
{
for (j=0; j<2; j++)
{
m_ppPlanLineShpLayerIDArr[i][j] = -1;
}
}
//<2F><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD>ı<EFBFBD>־
for (i=0; i<14; i++)
{
m_pHaveDrawLineFlag[i] = false;
}
m_pLineSectDlg = NULL;
m_pTargetDlg = NULL;
//<2F><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD>
m_bDesignFirstPoint = true;
m_pFlyLineDesign = NULL;
m_pLineDesign = NULL;
m_bShowToolBar = false;
//<2F><><EFBFBD><EFBFBD>վλ<D5BE><CEBB>
g_gcsLon = 0; //<2F><><EFBFBD><EFBFBD>
g_gcsLat = 0; //γ<><CEB3>
g_gcsAlt = 0; //<2F>߶<EFBFBD>
memset(&m_guidePtInfo, 0, sizeof(GuidePointData));
//<2F><><EFBFBD><EFBFBD>վλ<D5BE>õ<EFBFBD>ʸ<EFBFBD><CAB8>ͼ<EFBFBD><CDBC>
m_gcsPtShpLayerID = -1;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>õ<EFBFBD>ʸ<EFBFBD><CAB8>ͼ<EFBFBD><CDBC>
m_guidePtShpLayerID = -1;
//<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>ĺ<EFBFBD><C4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
memset(&m_curEditLinePoint, 0, sizeof(PtStruct));
//Ŀ<><C4BF><EFBFBD>ʸ<EFBFBD><CAB8>ͼ<EFBFBD><CDBC>ID<49><44>
//memset(m_pTargetShapfileID, 0, sizeof(long)*MAX_TARGET_NUM);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD>
m_toolbarHeight = 0;
//<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>εı<CEB5>ʶ
m_bAutoMove = true;
memset(m_pCallBackShapfileID, 0, sizeof(long)*255);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
m_guidePointMode = 0;
m_bGuideMode =false ;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽĬ<CABD><C4AC>Ϊfalse
///////
m_bSetPointModel=false; //û<>д<EFBFBD><D0B4><EFBFBD><EFBFBD>õ㹤<C3B5><E3B9A4>ģʽ
m_bEndSetPoint=false;
m_iPtSel=-1;
m_bLDSetPoint = FALSE;
m_canvasLayerID = -1;
memset(&m_infoData,0,sizeof(m_infoData));
m_targetSelID = 0;
m_bSelectDropPoint = false;
m_gisManager = GISManager::getInstance();
for (int i=0;i<g_iDemAltPtNum;i++)
{
g_lDemAltLayerID[i] = -1;
g_lDemAltDisLayerID[i] = -1;
g_lDemPtNumLayerID[i] = -1;
}
m_bPlotDemArea = false;
m_bEnableShowADSB = true;
}
CGISDlg::~CGISDlg()
{
timeKillEvent(TimerID_Draw);
if(m_Layer != NULL)
{
delete m_Layer;
m_Layer = NULL;
}
if (m_pLonLatDlg != NULL)
{
delete m_pLonLatDlg;
m_pLonLatDlg = NULL;
}
if (m_pHZDistanceDlg != NULL)
{
delete m_pHZDistanceDlg;
m_pHZDistanceDlg = NULL;
}
if (m_pFlyLineDesign != NULL)
{
delete m_pFlyLineDesign;
m_pFlyLineDesign = NULL;
}
if (m_pLineDesign != NULL)
{
delete m_pLineDesign;
m_pLineDesign = NULL;
}
if (m_pDesignLineStruct != NULL)
{
delete []m_pDesignLineStruct;
m_pDesignLineStruct = NULL;
}
//2016.01.06
if (m_pNewDesignLineStruct != NULL)
{
delete []m_pNewDesignLineStruct;
m_pNewDesignLineStruct = NULL;
}
if (m_pLineSectDlg != NULL)
{
delete m_pLineSectDlg;
m_pLineSectDlg = NULL;
}
if (m_pTargetDlg != NULL)
{
delete m_pTargetDlg;
m_pTargetDlg = NULL;
}
if(m_gisManager != NULL)
{
m_gisManager->DestroyObject();
m_gisManager = NULL;
}
}
void CGISDlg::DoDataExchange(CDataExchange* pDX)
{
CBCGPDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_MAP1, m_map);
}
BEGIN_MESSAGE_MAP(CGISDlg, CBCGPDialog)
//{{AFX_MSG_MAP(CGISDlg)
ON_WM_MOUSEMOVE()
// ON_WM_MOUSEWHEEL()
ON_COMMAND(ID_ADDPOINT, OnAddpoint)
ON_MESSAGE(WM_SET_LAYER_STATUS, OnSetLayerStatus)
ON_MESSAGE(WM_CLOSE_LONLAT_DIALOG, OnCloseLonLatDialog)
ON_MESSAGE(WM_CLOSE_DISTANCE_DIALOG, OnCloseShowDistanceDialog)
ON_MESSAGE(WM_CLOSE_LINEDESIGN_DIALOG, OnCloseLineDesignDialog)
ON_MESSAGE(WM_ADD_LINE_POINT, OnAddLinePoint) //<2F><><EFBFBD>Ӻ<EFBFBD><D3BA><EFBFBD>
ON_MESSAGE(WM_EDIT_LINE_POINT, OnEditLinePoint) //<2F><EFBFBD><E0BCAD><EFBFBD><EFBFBD>
ON_MESSAGE(WM_DELETE_LINE_POINT, OnDeleteLinePoint) //ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ON_MESSAGE(WM_SAVE_LINE_POINTS, OnSaveLinePoints) //<2F><><EFBFBD><EFBFBD><E6BABD>
ON_COMMAND(IDT_BUTTON1, OnAddMapData) //<2F><><EFBFBD>ص<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>
ON_COMMAND(IDT_BUTTON2, OnAddRasterImage) //<2F><><EFBFBD><EFBFBD>դ<EFBFBD><D5A4>Ӱ<EFBFBD><D3B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ON_COMMAND(IDT_BUTTON3, OnAddFlyLineData) //<2F><><EFBFBD>غ<EFBFBD><D8BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ON_COMMAND(IDT_BUTTON4, OnLayerManage) //ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD>
ON_COMMAND(IDT_BUTTON5, OnRemoveAllLayers) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>
ON_COMMAND(IDM_DESIGN_MYFLYLINE, OnFlyLineDesign) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2015.11.25 <09><><EFBFBD>κ<EFBFBD><CEBA><EFBFBD><EFBFBD><EFBFBD>ƶԻ<C6B6><D4BB><EFBFBD>
ON_COMMAND(IDT_BUTTON6, OnMenuLinePtCtrlShow/*OnMapSelect*/) //<2F><>ͼѡ<CDBC><D1A1>
ON_COMMAND(IDT_BUTTON7, OnMapZoomIn) //<2F><>ͼ<EFBFBD>Ŵ<EFBFBD>
ON_COMMAND(IDT_BUTTON8, OnMapZoomOut) //<2F><>ͼ<EFBFBD><CDBC>С
ON_COMMAND(IDT_BUTTON9, OnMapMove) //<2F><>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>
ON_COMMAND(IDT_BUTTON10, OnMapFullScreen) //<2F><>ͼȫ<CDBC><C8AB><EFBFBD><EFBFBD>ʾ
ON_COMMAND(IDT_BUTTON11, OnEraseTrack) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ON_COMMAND(IDT_BUTTON12, OnShowLonLatInfo) //<2F><>ʾ<EFBFBD><CABE>γ<EFBFBD><CEB3><EFBFBD><EFBFBD>Ϣ
ON_COMMAND(IDT_BUTTON13, OnSurvey) //<2F><><EFBFBD><EFBFBD>2<EFBFBD><32>֮<EFBFBD><D6AE>ľ<EFBFBD><C4BE><EFBFBD>
ON_COMMAND(IDT_BUTTON14, OnShowCtrlMenu/*OnPrint*/) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> //<2F><>ӡ<EFBFBD><D3A1><EFBFBD>
ON_COMMAND(IDT_BUTTON15, OnZhangCW) //<2F><>ӡ<EFBFBD><D3A1><EFBFBD>
ON_NOTIFY_EX(TTN_NEEDTEXT,0,OnToolTipsNotify) //<2F><>ť<EFBFBD><C5A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
ON_COMMAND(IDM_GUIDE_FLY1, OnGuideMode1)
ON_COMMAND(IDM_DESIGN_MYFLYLINE, OnDesignLine)
ON_UPDATE_COMMAND_UI(IDM_GUIDE_FLY1, OnUpdateGuideMode1)
ON_COMMAND(IDM_GUIDE_FLY2, OnGuideMode2)
ON_UPDATE_COMMAND_UI(IDM_GUIDE_FLY2, OnUpdateGuideMode2)
ON_COMMAND(IDM_SHOW_LINE1, OnShowLine1)
ON_UPDATE_COMMAND_UI(IDM_SHOW_LINE1, OnUpdateLineDisplay1)
ON_COMMAND(IDM_SHOW_LINE2, OnShowLine2)
ON_UPDATE_COMMAND_UI(IDM_SHOW_LINE2, OnUpdateLineDisplay2)
ON_COMMAND(IDM_SHOW_LINE3, OnShowLine3)
ON_UPDATE_COMMAND_UI(IDM_SHOW_LINE3, OnUpdateLineDisplay3)
ON_COMMAND(IDM_SHOW_LINE4, OnShowLine4)
ON_UPDATE_COMMAND_UI(IDM_SHOW_LINE4, OnUpdateLineDisplay4)
ON_COMMAND(IDM_SHOW_LINE5, OnShowLine5)
ON_UPDATE_COMMAND_UI(IDM_SHOW_LINE5, OnUpdateLineDisplay5)
ON_COMMAND(IDM_AUTO_MOVE, OnAutoMove)
ON_UPDATE_COMMAND_UI(IDM_AUTO_MOVE, OnUpdateAutoMov)
ON_MESSAGE(WM_CHECK_FLY_LINE_STATUS, OnCheckFlyLineShowStatus)
ON_COMMAND(IDM_REMOVE_GUIDE_DRAW, OnRemoveGuidePtDraw)
ON_COMMAND(IDM_OPEN_FLYLINE, OnAddFlyLineData)
ON_COMMAND(ID_ENDDESIGN, OnEnddesign)
//}}AFX_MSG_MAP
ON_COMMAND(ID_CLEARPOINT, OnClearpoint)
ON_COMMAND(ID_EDITPOINT, OnEditpoint)
ON_COMMAND(ID_DELPOINT, OnDelpoint)
//ON_COMMAND(IDM_BINDLINE1, &CGISDlg::OnBindline1)
ON_COMMAND(IDM_BINDLINE2, OnBindline2)
ON_COMMAND(ID_LOAD_MYLINE1, OnLoadMyline1)
ON_COMMAND(IDM_BINDLINE3, OnBindline3)
ON_COMMAND(IDM_BINDLINE4, OnBindline4)
ON_COMMAND(IDM_BINDLINE5, OnBindline5)
ON_COMMAND(IDM_LAYERMNG, OnLayermng)
ON_COMMAND(IDM_ADDGTARGET, OnAddgtarget)
//ON_MESSAGE(MESSAGE_DRAWZK, &CGISDlg::DRAW_ZK)
// ON_WM_MOUSEHWHEEL()
ON_COMMAND(ID_NLINEDESIGN, &CGISDlg::OnNlinedesign)
ON_UPDATE_COMMAND_UI(ID_NLINEDESIGN, &CGISDlg::OnUpdateNlinedesign)
ON_COMMAND(ID_SHOW_PD10, &CGISDlg::OnShowPd10)
ON_UPDATE_COMMAND_UI(ID_SHOW_PD10, &CGISDlg::OnUpdateShowPd10)
ON_COMMAND(ID_SHOW_HS11, &CGISDlg::OnShowHs11)
ON_UPDATE_COMMAND_UI(ID_SHOW_HS11, &CGISDlg::OnUpdateShowHs11)
ON_COMMAND(ID_BIND_HS11, &CGISDlg::OnBindHs11)
ON_COMMAND(ID_SHOW_TC12, &CGISDlg::OnShowTc12)
ON_COMMAND(ID_BIND_TC12, &CGISDlg::OnBindTc12)
ON_UPDATE_COMMAND_UI(ID_SHOW_TC12, &CGISDlg::OnUpdateShowTc12)
ON_WM_SIZE()
ON_COMMAND(ID_32855, &CGISDlg::On32855)
ON_WM_MOVE()
ON_MESSAGE(WM_SEL_UAV, &CGISDlg::OnSelUav)
ON_COMMAND(ID_ADD_TARGET, &CGISDlg::OnAddTarget)
ON_MESSAGE(WM_DRAW_TARGET, &CGISDlg::OnDrawTarget)
ON_WM_SHOWWINDOW()
ON_COMMAND(ID_TARGET_DELETE, &CGISDlg::OnTargetDelete)
ON_MESSAGE(WM_SEND_SELECTTARGET, &CGISDlg::OnSendSelectTarget)
ON_MESSAGE(WM_SEND_CLOSEDEMALT, &CGISDlg::OnSendCloseDemAlt)
ON_MESSAGE(WM_SHOW_POINTINMAP, &CGISDlg::OnShowPointInMap)
ON_MESSAGE(WM_SHOW_ISVISIBLE, &CGISDlg::OnShowPointVisible)
ON_MESSAGE(WM_SHOW_NOTVISIBLE, &CGISDlg::OnShowPointNotVisible)
ON_MESSAGE(WM_SEND_CLEARSHAPE, &CGISDlg::OnSendClearShape)
ON_MESSAGE(WM_SHOW_VISI_REALTIME, &CGISDlg::OnShowAreaVisible)
ON_MESSAGE(WM_SHOW_NOTVISI_REALTIME, &CGISDlg::OnShowAreaNotVisible)
ON_MESSAGE(WM_SHOW_VISI_DELETE, &CGISDlg::OnShowClearArea)
ON_MESSAGE(WM_ADD_LINELAYER, &CGISDlg::OnAddLineLayer)
ON_MESSAGE(WM_DEL_LINELAYER, &CGISDlg::OnDelLineLayer)
ON_MESSAGE(WM_SEND_REGIONTOGIS, &CGISDlg::OnSendRegionToGis)
ON_MESSAGE(WM_DRAW_LINEPOINT, &CGISDlg::OnDrawLinePoint)
ON_MESSAGE(WM_SHOW_CRASH_REALTIME, &CGISDlg::OnShowCrashArea)
ON_MESSAGE(WM_SEND_DRAWFIGHT, &CGISDlg::OnSendDrawFight)
ON_MESSAGE(WM_SEND_DRAWDEMREGION, &CGISDlg::OnSendDrawDemRegion)
ON_MESSAGE(WM_SEND_MAPLOCATION,&CGISDlg::OnZoomToLocation)
ON_COMMAND(ID__MENU_LIGHTREGION, &CGISDlg::OnMenuLightRegion)
ON_COMMAND(ID_MENU_ENTRYPOINT, &CGISDlg::OnMenuEntryPoint)
ON_COMMAND(ID_MENU_PLOTDEMAREA, &CGISDlg::OnMenuPlotdemArea)
ON_MESSAGE(WM_SEND_MAPCURSORMODE, &CGISDlg::OnSetMapCursorMode) //<2F><><EFBFBD><EFBFBD>Map CursorMode
ON_MESSAGE(WM_SEND_DRAWMARKER, &CGISDlg::OnDrawMarker) //<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD>ǵ<EFBFBD>
ON_COMMAND(ID_MENU_CLEARGCS, &CGISDlg::OnMenuClearGCS)
ON_COMMAND(ID_MENU_ADSB, &CGISDlg::OnMenuADSB)
ON_MESSAGE(WM_SEND_DRAWUAV, &CGISDlg::OnTimerDrawUAV) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD>
//<2F><><EFBFBD>߱༭ // -----by Wu 2023.09.14
ON_COMMAND(ID_SELECT_LINE, OnMapSelect) //ѡ<><D1A1><EFBFBD><EFBFBD>
ON_COMMAND(ID_EDIT_NODE, OnEditLine) //<2F><EFBFBD><E0BCAD><EFBFBD><EFBFBD>
ON_COMMAND(ID_EDIT_LINE, ShowModifyPointDlg) //<2F>޸ĺ<DEB8><C4BA><EFBFBD>
ON_COMMAND(ID_EDIT_SAVE, ShowEditSaveDlg) //<2F><><EFBFBD><EFBFBD>
/*
ON_COMMAND(ID_MODIFY_LINEPOINT, OnMapSelect); //<2F>޸ĺ<DEB8><C4BA><EFBFBD><E3BABD>
ON_COMMAND(ID_EDIT_SAVE, OnMapSelect); //<2F><><EFBFBD><EFBFBD>༭*/
/*
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>6-8
ON_COMMAND(IDM_SHOW_LINE6, &CGISDlg::OnShowLine6)
ON_UPDATE_COMMAND_UI(IDM_SHOW_LINE6, &CGISDlg::OnUpdateShowLine6)
ON_COMMAND(IDM_SHOW_LINE7, &CGISDlg::OnShowLine7)
ON_UPDATE_COMMAND_UI(IDM_SHOW_LINE7, &CGISDlg::OnUpdateShowLine7)
ON_COMMAND(IDM_SHOW_LINE8, &CGISDlg::OnShowLine8)
ON_UPDATE_COMMAND_UI(IDM_SHOW_LINE8, &CGISDlg::OnUpdateShowLine8)
ON_COMMAND(IDM_BINDLINE6, &CGISDlg::OnBindline6)
ON_COMMAND(IDM_BINDLINE7, &CGISDlg::OnBindline7)
ON_COMMAND(IDM_BINDLINE8, &CGISDlg::OnBindline8)
ON_COMMAND(IDM_SHOW_LINE9, &CGISDlg::OnShowLine9)
ON_UPDATE_COMMAND_UI(IDM_SHOW_LINE9, &CGISDlg::OnUpdateShowLine9)
ON_COMMAND(IDM_SHOW_LINE10, &CGISDlg::OnShowLine10)
ON_UPDATE_COMMAND_UI(IDM_SHOW_LINE10, &CGISDlg::OnUpdateShowLine10)
ON_COMMAND(IDM_BINDLINE9, &CGISDlg::OnBindline9)
ON_COMMAND(IDM_BINDLINE10, &CGISDlg::OnBindline10)*/
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CGISDlg message handlers
BOOL CGISDlg::OnInitDialog()
{
CBCGPDialog::OnInitDialog();
SetWindowPos(NULL,0 ,0 ,600, 700, SWP_NOZORDER|SWP_NOMOVE);
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CreateFloatToolBar();
//<2F><><EFBFBD>ھ<EFBFBD><DABE>
g_mapHwnd = this->GetSafeHwnd();
//<2F><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ի<EFBFBD><D4BB><EFBFBD>
m_Layer = new CMapLayerManage();
m_Layer->Create(IDD_DIALOG_LAYER_MANAGE);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB>Ļ<EFBFBD>е<EFBFBD>GIS<49><53>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
m_gisAreaInScreen = m_rcGISArea;
m_gisAreaInScreen.top += 32;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>γ<EFBFBD>ȶԻ<C8B6><D4BB><EFBFBD>
m_pLonLatDlg = new CLonLatDlg();
m_pLonLatDlg->MoveToGivenArea(m_gisAreaInScreen);
m_pLonLatDlg->Create(IDD_XY_DIALOG);
//2<><32>֮<EFBFBD><D6AE><EFBFBD>ˮƽ<CBAE><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD>Ի<EFBFBD><D4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_pHZDistanceDlg = new CShowHZDistanceDlg();
m_pHZDistanceDlg->MoveToGivenArea(m_gisAreaInScreen);
m_pHZDistanceDlg->Create(IDD_DISTANCE_DIALOG);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶԻ<C6B6><D4BB><EFBFBD>
m_pFlyLineDesign = new CFlyLineDesign();
m_pFlyLineDesign->MoveToGivenArea(m_gisAreaInScreen);
m_pFlyLineDesign->Create(IDD_DIALOG_FLYLINE_DESIGN);
// m_pLineDesign = new CLineDesign();
// m_pLineDesign->Create(IDD_DLG_LINEDESIGN);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݶԻ<DDB6><D4BB><EFBFBD>
m_pLineSectDlg = new CLineSectDisAZDlg();
m_pLineSectDlg->MoveToGivenArea(m_gisAreaInScreen);
m_pLineSectDlg->Create(IDD_DIALOG_LINE_SECT);
m_pTargetDlg = new CTargetDlg();
m_pTargetDlg->Create(IDD_DIALOG_TARGET,this);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǵ<EFBFBD>Ի<EFBFBD><D4BB><EFBFBD>
m_dlgMarker.Create(IDD_DIALOG_MARKER,this);
m_dlgMarker.MoveToGivenArea(m_gisAreaInScreen);
//<2F><>ͼ<EFBFBD><CDBC>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>߶ȵ<DFB6><C8B5><EFBFBD>
m_onePerWidth = 1.0/m_rcGISArea.Width();
m_onePerHeight = 1.0/m_rcGISArea.Height();
//<2F><>ͼ<EFBFBD><CDBC>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>߶<EFBFBD>
m_mapAreaHalfWidth = 0.5*m_rcGISArea.Width();
m_mapAreaHalfHeight = 0.5*m_rcGISArea.Height();
//<2F><><EFBFBD><EFBFBD>
m_rcgisSmallArea = m_rcGISArea;
m_rcgisSmallArea.top = 24;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD>
m_toolbarHeight = m_rcgisSmallArea.top;
m_ToolBar.ShowWindow(SW_SHOW);
m_map.SetCursorMode(mapWindow::tkCursorMode::cmNone);
m_gisManager->m_pMapCwnd = GetDlgItem(IDC_MAP1);
m_gisManager->setMap(&m_map);
m_dlgLightRegion.Create(IDD_DIALOG_LIGHTREGION,this);
m_DlgDemAlt.Create(IDD_DIALOG_DEMALT,this);
//<2F><>ý<EFBFBD>嶨ʱ<E5B6A8><CAB1>
timeBeginPeriod(0);
TimerID_Draw = timeSetEvent(500, 1, (LPTIMECALLBACK)CatchMTimerDraw, (DWORD)NULL, TIME_PERIODIC);
if(!TimerID_Draw)
{
BCGPMessageBox(_T("<EFBFBD><EFBFBD>ý<EFBFBD>嶨ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!"),MB_OK|MB_ICONEXCLAMATION,0);
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>
AddTianDiTuService();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>
LoadTianDiTuService();
m_map.SetScalebarVisible(true); //<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
return TRUE;
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>Ӱ<EFBFBD><D3B0><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>
void CGISDlg::AddTianDiTuService()
{
string baseurl = "http://{switch:t0,t1,t2,t3,t4,t5,t6,t7}.tianditu.gov.cn/img_w/wmts?service=wmts&request=GetTile&version=1.0.0&LAYER=img&tileMatrixSet=w&TileMatrix={zoom}&TileRow={y}&TileCol={x}&style=default&format=tiles&tk=";
//string baseurl_vec = "http://t0.tianditu.gov.cn/vec_w/wmts?service=wmts&request=GetTile&version=1.0.0&LAYER=vec&tileMatrixSet=w&TileMatrix={zoom}&TileRow={y}&TileCol={x}&style=default&format=tiles&tk=";
string key = "53d93c1a8b3400b050817ac001bdb60e";//<2F><><EFBFBD><EFBFBD>Key<65><79><EFBFBD>շ<EFBFBD><D5B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1w<31>Ρ<EFBFBD>
//string key = "5ff7526440d3a7dab78037697c4679fa";
mapWindow::ITiles* pTiles = m_map.GetTiles();
mapWindow::ITileProvidersPtr providers = pTiles->GetProviders();
//pTiles->ClearCache(mapWindow::tkCacheType::Disk);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Tiles<65><73><EFBFBD><EFBFBD>
//int providerId = (int)mapWindow::tkTileProvider::ProviderCustom + 1; // (1024 + 1) should be unique across application runs in case disk caching is used
int providerId = mapWindow::tkTileProvider::ProviderCustom;
_bstr_t copyright = "TianDiTu,All Rights Reserved";
bool su = providers->Add(providerId, "TianDiTu",
(baseurl+key).c_str(),//(_bstr_t)url.c_str(),
mapWindow::tkTileProjection::SphericalMercator, 0, 18);//,"TianDiTu,All Rights Reserved"
m_map.put_ZoomBarMaxZoom(18);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>18<31><38>
//pTiles->ProviderId = providerId; //<2F><><EFBFBD>ǰ<EEB5B1><C7B0><EFBFBD><EFBFBD>
//Tile<6C><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//pTiles->put_UseCache(mapWindow::tkCacheType::Disk,true);//Ĭ<><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>´<EFBFBD><C2B4>ڴ<EFBFBD>״̬
//pTiles->put_UseCache(mapWindow::tkCacheType::RAM, true);//Ĭ<><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>´<EFBFBD><C2B4>ڴ<EFBFBD>״̬
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//pTiles->put_DoCaching(mapWindow::tkCacheType::RAM, true);//Ĭ<><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>´<EFBFBD><C2B4>ڴ<EFBFBD>״̬
pTiles->put_DoCaching(mapWindow::tkCacheType::Disk,true);//<2F><><EFBFBD>Ĭ<EFBFBD>Ϲر<CFB9>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ھ<EFBFBD><DABE>д<EFBFBD><D0B4><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>һ<EFBFBD><D2BB>ֻ<EFBFBD><D6BB>ʹ<EFBFBD><CAB9>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ݿ⡣
//pTiles->put_UseCache(mapWindow::tkCacheType::Disk, true); //Ĭ<><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>´<EFBFBD><C2B4>ڴ<EFBFBD>״̬
pTiles->put_DiskCacheFilename(_bstr_t("./mwtiles.db3"));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵Ļ<CDB5><C4BB><EFBFBD><E6A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD>ɵ<EFBFBD><C9B5><EFBFBD>Ƭ<EFBFBD><C6AC><EFBFBD>Ա<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>µ<EFBFBD><C2B5><EFBFBD>Ƭ<EFBFBD>ڳ<EFBFBD><DAB3>ռ<EFBFBD>
//pTiles->put_MaxCacheSize(mapWindow::tkCacheType::RAM, 200.0); //<2F><>С<EFBFBD><D0A1> MB Ϊ<><CEAA>λ;Ĭ<><C4AC>Ϊ 100
pTiles->put_MaxCacheSize(mapWindow::tkCacheType::Disk, 300.0);//<2F><>С<EFBFBD><D0A1> MB Ϊ<><CEAA>λ;Ĭ<><C4AC>Ϊ 100
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>Ӱ<EFBFBD><D3B0><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>
void CGISDlg::LoadTianDiTuService()
{
mapWindow::IGlobalSettingsPtr glSettingsPtr;
glSettingsPtr.CreateInstance("MapWinGIS.GlobalSettings");
m_map.put_ReuseTileBuffer(true);
//m_map.SetMouseWheelSpeed(1);//Ĭ<><C4AC>ֵΪ 0.5<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0.1 - 10.0 <20><>Χ<EFBFBD>ڵ<EFBFBD>ֵ<EFBFBD><D6B5>ֵ 1.0 <20><><EFBFBD>ر<EFBFBD><D8B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>š<EFBFBD>
m_map.put_GrabProjectionFromData(false); //<2F><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>Ϊ0ʱͶӰ<CDB6>ÿյ<C3BF><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߵ<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>ʾ
m_map.put_Projection(mapWindow::tkMapProjection::PROJECTION_WGS84);
m_map.GetTiles()->ProviderId = mapWindow::tkTileProvider::ProviderCustom;
m_map.SetCursorMode(mapWindow::tkCursorMode::cmNone);
m_map.put_ZoomBehavior(mapWindow::tkZoomBehavior::zbUseTileLevels);
//m_map.put_KnownExtents(mapWindow::tkKnownExtents::keChina);
m_map.GetTiles()->Visible = true;
if (m_map.GetNumLayers()==0)
{
m_map.put_Longitude(100);
m_map.put_Latitude(37);
//m_map.put_CurrentZoom(4);
m_map.ZoomToTileLevel(6);
}
m_map.Redraw3(mapWindow::RedrawSkipAllLayers, True);
//<2F>Ƿ<EFBFBD><C7B7>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD>ͼ
m_bHaveAddMap = true;
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD>ŵ<EFBFBD>Ŀ<EFBFBD><C4BF>λ<EFBFBD><CEBB>
void CGISDlg::ZoomToLocation(double lon,double lat)
{
m_map.put_Projection(mapWindow::tkMapProjection::PROJECTION_WGS84);
m_map.GetTiles()->Visible = true;
m_map.put_Longitude(lon);
m_map.put_Latitude(lat);
m_map.put_CurrentZoom(16);
m_map.Redraw3(mapWindow::RedrawSkipAllLayers, True);
//<2F>Ƿ<EFBFBD><C7B7>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD>ͼ
m_bHaveAddMap = true;
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD>ص<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void CGISDlg::OnAddMapData()
{
TCHAR s[10000];
s[0]=0;
CFileDialog dlg(true);
dlg.m_ofn.lpstrTitle=_T("<EFBFBD>򿪱<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>");
dlg.m_ofn.lpstrFile=s;
dlg.m_ofn.nMaxFile=sizeof(s)/sizeof(TCHAR);
TCHAR filter[500]=_T("SHAPE<EFBFBD>ļ<EFBFBD>(*.shp)\0*.shp");
dlg.m_ofn.lpstrFilter=filter;
dlg.m_ofn.Flags|=OFN_ALLOWMULTISELECT|OFN_ENABLESIZING|OFN_EXPLORER;
if(dlg.DoModal()==IDCANCEL) return;
POSITION pos;
pos=dlg.GetStartPosition();
CString path;
long count=0;
while(pos)
{
path=dlg.GetNextPathName(pos);
count++;
}
pos=dlg.GetStartPosition();
while(pos)
{
path=dlg.GetNextPathName(pos);
Openlocalfile(path);
}
// <20><>ȡ<EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
CString fileName = GetSoftwareCurrentDirectory() + "\\map.ini";
::WritePrivateProfileString("map","layer",path,fileName);
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD>դ<EFBFBD><D5A4>Ӱ<EFBFBD><D3B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void CGISDlg::OnAddRasterImage()
{
TCHAR s[10000];
s[0]=0;
CFileDialog dlg(true);
dlg.m_ofn.lpstrTitle=_T("<EFBFBD>򿪱<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>");
dlg.m_ofn.lpstrFile=s;
dlg.m_ofn.nMaxFile=sizeof(s)/sizeof(TCHAR);
//TCHAR filter[500]=_T("SHAPE<50>ļ<EFBFBD>(*.shp)\0*.shp\0IMG<4D>ļ<EFBFBD>(*.img)\0*.img\0GeoTIFF<46>ļ<EFBFBD>(*.tif)\0*.tif\0ASC<53>ļ<EFBFBD>(*.asc)\0*.asc\0<><30><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>(*.*)\0*.*\0");
TCHAR filter[500]=_T("GeoTIFF<EFBFBD>ļ<EFBFBD>(*.tif)\0*.tif\0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>(*.*)\0*.*\0");
dlg.m_ofn.lpstrFilter=filter;
dlg.m_ofn.Flags|=OFN_ALLOWMULTISELECT|OFN_ENABLESIZING|OFN_EXPLORER;
if(dlg.DoModal()==IDCANCEL) return;
POSITION pos;
pos=dlg.GetStartPosition();
CString path;
long count=0;
while(pos)
{
path=dlg.GetNextPathName(pos);
count++;
}
pos=dlg.GetStartPosition();
while(pos)
{
path=dlg.GetNextPathName(pos);
Openlocalfile(path);
}
// <20><>ȡ<EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
CString fileName = GetSoftwareCurrentDirectory() + "\\map.ini";
::WritePrivateProfileString("map","layer",path,fileName);
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD>ļ<EFBFBD>ѡ<EFBFBD><D1A1>Ի<EFBFBD><D4BB>򣬼<EFBFBD><F2A3ACBC>غ<EFBFBD><D8BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
void CGISDlg::OnAddFlyLineData()
{
//δ<><CEB4><EFBFBD>ص<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (!m_bHaveAddMap)
{
return;
}
if (m_flyLineNum > m_totalFlyLines)
{
AfxMessageBox(_T("<EFBFBD>Ѽ<EFBFBD><EFBFBD>غ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>>12<31><32>"));
return;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>Ի<EFBFBD><D4BB><EFBFBD>
CFileDialog dlg(true, ".txt","*.txt",OFN_HIDEREADONLY, "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>(*.txt)|*.txt|", NULL);
if (dlg.DoModal() == IDOK)
{
//<2F><>ȡ<EFBFBD><C8A1>·<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
OnShowGivenLine(dlg.GetPathName());
}
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD>е<EFBFBD>ͼ<EFBFBD>ķŴ<C4B7><C5B4><EFBFBD><EFBFBD>
void CGISDlg::OnMapZoomIn()
{
m_bSetPointModel=FALSE;
//m_bLineDesign=FALSE;
m_bPtDel=FALSE;
m_bPtEdit=FALSE;
m_map.SetCursorMode(0);
m_bLDSetPoint = FALSE;
m_bSelectFeatureFlag = false;
}
//<2F><>ͼ<EFBFBD><CDBC>С
void CGISDlg::OnMapZoomOut()
{
m_bSetPointModel=FALSE;
//m_bLineDesign=FALSE;
m_bPtDel=FALSE;
m_bPtEdit=FALSE;
m_map.SetCursorMode(1);
m_bLDSetPoint = FALSE;
m_bSelectFeatureFlag = false;
}
//<2F><>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>
void CGISDlg::OnMapMove()
{
m_bSetPointModel=FALSE;
//m_bLineDesign=FALSE;
m_bPtDel=FALSE;
m_bPtEdit=FALSE;
if (m_map.GetCursorMode()==mapWindow::tkCursorMode::cmPan)
{
m_map.SetCursorMode(mapWindow::tkCursorMode::cmNone);
}
else
{
m_map.SetCursorMode(mapWindow::tkCursorMode::cmPan);
}
m_bLDSetPoint = FALSE;
m_bSelectFeatureFlag = false;
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD>ͼѡ<CDBC><D1A1>
void CGISDlg::OnMapSelect()
{
m_bSetPointModel=FALSE;
//m_bLineDesign=FALSE;
m_bPtDel=FALSE;
m_bPtEdit=FALSE;
m_map.SetCursorMode(3);
m_bLDSetPoint = FALSE;
if (!m_bEditLine) //<2F>Ǻ<EFBFBD><C7BA>߱༭ģʽ<C4A3>¿<EFBFBD>ѡ
{
m_bSelectFeatureFlag = true; // by Wu
}
else
{
m_map.SetCursorMode(5);
}
}
//<2F><>ͼȫ<CDBC><C8AB><EFBFBD><EFBFBD>ʾ
void CGISDlg::OnMapFullScreen()
{
m_bSetPointModel=FALSE;
//m_bLineDesign=FALSE;
m_bPtDel=FALSE;
m_bPtEdit=FALSE;
m_map.ZoomToMaxExtents();
m_map.SetCursorMode(4);
m_bLDSetPoint = FALSE;
m_bSelectFeatureFlag = false;
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><32>֮<EFBFBD><D6AE>ľ<EFBFBD><C4BE><EFBFBD>
void CGISDlg::OnSurvey()
{
m_bSelectFeatureFlag = false;
m_bSetPointModel=FALSE;
// m_bLineDesign=FALSE;
m_bPtDel=FALSE;
m_bPtEdit=FALSE;
m_bLDSetPoint = FALSE;
m_map.SetCursorMode(mapWindow::tkCursorMode::cmNone);
//<2F><><EFBFBD><EFBFBD><EFBFBD>
if (m_bPolylineMeasure)
{
ClearPloylineMeasure();
m_bPolylineMeasure = false;
m_numPolylineMeasurePts = 0;
m_bMeasureDrag = false;
}
else
{
m_bPolylineMeasure = true;
}
/*
//<2F><><EFBFBD><EFBFBD>
m_pHZDistanceDlg->ResetCoordinateData();
if (!m_bHaveShowDistanceDlg)
{
m_bHaveShowDistanceDlg = true;
//<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_pHZDistanceDlg->ShowWindow(SW_SHOW);
}
else
{
m_bHaveShowDistanceDlg = false;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_pHZDistanceDlg->ShowWindow(SW_HIDE);
}*/
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void CGISDlg::OnEraseTrack()
{
EraseTrack(0);
EraseTrack(1);
EraseTrack(2);
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void CGISDlg::EraseTrack(int uavid)
{
if (uavid<0||uavid>2)
{
return;
}
m_bSetPointModel=FALSE;
//m_bLineDesign=FALSE;
m_bPtDel=FALSE;
m_bPtEdit=FALSE;
m_bLDSetPoint = FALSE;
//<2F>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><CBBB>ķ<EFBFBD><C4B7>й켣<D0B9><ECBCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (m_bFirstDrawUAVTrack[uavid])
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><CBBB>ı<EFBFBD><C4B1>ͼ<EFBFBD><CDBC>
if (m_flyTrackLayerID[uavid] != -1)
{
m_map.RemoveLayer(m_flyTrackLayerID[uavid]);
}
if (m_UAVFlyTrackLayerID[uavid] != -1)
{
m_map.RemoveLayer(m_UAVFlyTrackLayerID[uavid]);
}
m_bFirstDrawUAVTrack[uavid] = false;
m_map.Redraw();
}
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void CGISDlg::OnEraseAllTargets()
{
//<2F><><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (m_targetPointNum > 0)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD>Label
m_map.ClearLabels(m_targetDrawLayerID);
m_map.ClearDrawing(m_targetDrawLayerID);
m_targetDrawLayerID = -1;
m_map.Redraw();
}
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><CBBB>ķ<EFBFBD><C4B7>к<EFBFBD><D0BA><EFBFBD><E3A3AC><EFBFBD>Ƴ<EFBFBD><C6B3><EFBFBD><EFBFBD>˻<EFBFBD><CBBB>ķ<EFBFBD><C4B7>к<EFBFBD><D0BA><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EBA3BA><EFBFBD>˻<EFBFBD><CBBB>ĵ<EFBFBD>ǰ<EFBFBD>ľ<EFBFBD><C4BE><EFBFBD>dX<64><58>γ<EFBFBD><CEB3>dY<64><59><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>yaw, <20><><EFBFBD>ԣ<EFBFBD><D4A3><EFBFBD>Ϊ<EFBFBD><CEAA>λ<EFBFBD><CEBB>
void CGISDlg::AddFlyPoint(int uavId,const double dX, const double dY, const double yaw,bool control)
{
//δ<><CEB4><EFBFBD>ص<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (!m_bHaveAddMap)
{
return;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ľ<EFBFBD>γ<EFBFBD><CEB3><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>Χ<EFBFBD><CEA7><EFBFBD>м<EFBFBD><EFBFBD><E9A3AC><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>Ч
double fabsLon = fabs(dX);
double fabsLat = fabs(dY);
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>ݷ<EFBFBD>Χ<EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>Ч
if ((fabsLon<=0.000001) || (fabsLon>180) || (fabsLat<=0.000001) || (fabsLat>90) || (yaw<0) || (yaw>360))
{
return;
}
if (m_bAutoMove)
{
//<2F>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>Σ<EFBFBD>ʹ<EFBFBD>ɻ<EFBFBD><C9BB><EFBFBD>ʾ<EFBFBD>ڵ<EFBFBD>ͼ<EFBFBD>м<EFBFBD>
if (control)
{
AutomaticMoveMap(dX, dY);
}
}
//<2F><><EFBFBD><E6BABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>zcw
m_drawTrackPtNum[uavId]++;
//<2F><><EFBFBD><EFBFBD><EFBFBD>˺<EFBFBD><CBBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>200-<2D><>2000 2017.07.05
if (m_drawTrackPtNum[uavId] >= 100)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
EraseTrack(uavId);
m_drawTrackPtNum[uavId] = 0;
}
//<2F><><EFBFBD><EFBFBD>UAV<41>ķ<EFBFBD><C4B7>й켣
DrawUAV(uavId,dX, dY, yaw,control);
/*static int num = 0;
if (num == 1)
{
DrawCanvas();
num = 0;
}
num++;*/
//ʵʱͨ<CAB1>ӷ<EFBFBD><D3B7><EFBFBD>
//m_dlgLightRegion.AnalysisRealTime(dY, distance, angleGU, g_gcsLon, g_gcsLat);
//m_dlgLightRegion.DrawVisiAreaRealTime(dY, distance, angleGU, g_gcsLon, g_gcsLat);
m_dlgLightRegion.DrawCrashAreaRealTime(dY, dX, dY);
//ˢ<>µ<EFBFBD>ͼ<EFBFBD><CDBC>ÿ5֡ˢ<D6A1><CBA2>һ<EFBFBD>Σ<EFBFBD>
m_map.Redraw();
}
void CGISDlg::AddFlyPoint_ADS(const int uavNum, const int uavid, const double lon, const double lat, const double yaw, const bool control, const CString strPlaneName)
{
//δ<><CEB4><EFBFBD>ص<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (!m_bHaveAddMap)
{
return;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ľ<EFBFBD>γ<EFBFBD><CEB3><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>Χ<EFBFBD><CEA7><EFBFBD>м<EFBFBD><EFBFBD><E9A3AC><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>Ч
double fabsLon = fabs(lon);
double fabsLat = fabs(lat);
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>ݷ<EFBFBD>Χ<EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>Ч
if ((fabsLon<=0.000001) || (fabsLon>180) || (fabsLat<=0.000001) || (fabsLat>90) || (yaw<0) || (yaw>360))
{
return;
}
//<2F><><EFBFBD><EFBFBD>UAV<41>ķ<EFBFBD><C4B7>й켣
DrawUAV_ADS(uavNum, uavid, lon, lat, yaw, control, strPlaneName);
//ˢ<>µ<EFBFBD>ͼ<EFBFBD><CDBC>ÿ5֡ˢ<D6A1><CBA2>һ<EFBFBD>Σ<EFBFBD>
m_map.Redraw();
}
void CGISDlg::Openlocalfile(CString file)
{
int error=0;
CString filetype=GetFileType(file);
CString filename=GetFileName(file);
filetype.MakeLower();
if(filetype.Compare("shp")==0)
{
mapWindow::IShapefilePtr shape;
shape.CreateInstance("MapWinGIS.Shapefile");
if( !shape->Open((_bstr_t)file,NULL))
{
error=1;
}
_bstr_t pro=shape->GetProjection();
//<2F><><EFBFBD>õ<EFBFBD>ͼ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD>ɫΪ<C9AB><CEAA>ɫ
m_map.SetBackColor(RGB(255,255,255));
int shpLayerPose = m_map.AddLayer(shape,true);
//<2F>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD>׶<EFBFBD>
m_map.MoveLayerBottom(shpLayerPose);
m_Layer->AddLayerInfo(filename,1);
//<2F>Ƿ<EFBFBD><C7B7>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD>ͼ
m_bHaveAddMap = true;
}
else if(filetype.Compare("img")==0)
{
mapWindow::IImagePtr image;
image.CreateInstance("MapWinGIS.Image");
if( !image->Open((_bstr_t)file,mapWindow::IMG_FILE,true,NULL))
{
error=1;
}
//<2F><><EFBFBD>õ<EFBFBD>ͼ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD>ɫΪ<C9AB><CEAA>ɫ
m_map.SetBackColor(RGB(255,255,255));
m_map.AddLayer(image,true);
m_Layer->AddLayerInfo(filename,2);
//<2F>Ƿ<EFBFBD><C7B7>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD>ͼ
m_bHaveAddMap = true;
}
else if(filetype.Compare("tif")==0)
{
mapWindow::IImagePtr image;
image.CreateInstance("MapWinGIS.Image");
if( !image->Open((_bstr_t)file,mapWindow::TIFF_FILE,true,NULL))
{
error=1;
}
//<2F><><EFBFBD>õ<EFBFBD>ͼ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD>ɫΪ<C9AB><CEAA>ɫ
m_map.SetBackColor(RGB(255,255,255));
int tiffLayerID = m_map.AddLayer(image,true);
m_Layer->AddLayerInfo(filename,2);
//<2F>Ƿ<EFBFBD><C7B7>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD>ͼ
m_bHaveAddMap = true;
}
else if(filetype.Compare("asc")==0)
{
mapWindow::IImagePtr image;
image.CreateInstance("MapWinGIS.Image");
if( !image->Open((_bstr_t)file,mapWindow::ASC_FILE,true,NULL))
{
error=1;
}
//<2F><><EFBFBD>õ<EFBFBD>ͼ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD>ɫΪ<C9AB><CEAA>ɫ
m_map.SetBackColor(RGB(255,255,255));
m_map.AddLayer(image,true);
m_Layer->AddLayerInfo(filename,2);
//<2F>Ƿ<EFBFBD><C7B7>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD>ͼ
m_bHaveAddMap = true;
}
/*if(m_bHaveAddMap)
{
ReadTargetIni(true);
}*/
if(error==1)
{
CString msg="<EFBFBD>޷<EFBFBD><EFBFBD><EFBFBD> "+file;
AfxMessageBox(msg);
}
m_gisManager->m_bHaveAddMap = m_bHaveAddMap;
}
CString CGISDlg::GetFileType(CString file)
{
CString type;
long len=file.GetLength();
int pos=file.ReverseFind('.');
type=file.Right(len-pos-1);
return type;
}
CString CGISDlg::GetFileName(CString file)
{
CString name;
long len=file.GetLength();
int pos=file.ReverseFind('\\');
name=file.Right(len-pos-1);
return name;
}
//<2F><>ʾ<EFBFBD>Ҽ<EFBFBD><D2BC>˵<EFBFBD>
void CGISDlg::OnShowRMenu()
{
//<2F><><EFBFBD><EFBFBD>Ҽ<EFBFBD><D2BC><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݲ˵<DDB2>
if (!m_bLineDesign)
{
//<2F><>ʾ<EFBFBD><CABE>ݲ˵<DDB2>
CMenu menu;
POINT pt;
GetCursorPos( &pt );
//<2F><><EFBFBD><EFBFBD><EFBFBD>ڻط<DABB>ģʽʱ<CABD><CAB1><EFBFBD><EFBFBD><EFBFBD>á<EFBFBD><C3A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><D7B0><EFBFBD>Ӳ˵<D3B2><CBB5><EFBFBD><EFBFBD>Ȼ<EFBFBD>ɫ
menu.LoadMenu(IDR_MENU2);
//<2F><><EFBFBD><EFBFBD>1
if (m_pHaveDrawLineFlag[0])
{
menu.CheckMenuItem( IDM_SHOW_LINE1, MF_BYCOMMAND | MF_CHECKED );
}
else
{
menu.CheckMenuItem( IDM_SHOW_LINE1, MF_BYCOMMAND | MF_UNCHECKED );
}
//<2F><><EFBFBD><EFBFBD>2
if (m_pHaveDrawLineFlag[1])
{
menu.CheckMenuItem( IDM_SHOW_LINE2, MF_BYCOMMAND | MF_CHECKED );
}
else
{
menu.CheckMenuItem( IDM_SHOW_LINE2, MF_BYCOMMAND | MF_UNCHECKED );
}
//<2F><><EFBFBD><EFBFBD>3
if (m_pHaveDrawLineFlag[2])
{
menu.CheckMenuItem( IDM_SHOW_LINE3, MF_BYCOMMAND | MF_CHECKED );
}
else
{
menu.CheckMenuItem( IDM_SHOW_LINE3, MF_BYCOMMAND | MF_UNCHECKED );
}
//<2F><><EFBFBD><EFBFBD>4
if (m_pHaveDrawLineFlag[3])
{
menu.CheckMenuItem( IDM_SHOW_LINE4, MF_BYCOMMAND | MF_CHECKED );
}
else
{
menu.CheckMenuItem( IDM_SHOW_LINE4, MF_BYCOMMAND | MF_UNCHECKED );
}
//<2F><><EFBFBD><EFBFBD>5
if (m_pHaveDrawLineFlag[4])
{
menu.CheckMenuItem( IDM_SHOW_LINE5, MF_BYCOMMAND | MF_CHECKED );
}
else
{
menu.CheckMenuItem( IDM_SHOW_LINE5, MF_BYCOMMAND | MF_UNCHECKED );
}
/*
//<2F><><EFBFBD><EFBFBD>6
if (m_pHaveDrawLineFlag[5])
{
menu.CheckMenuItem( IDM_SHOW_LINE6, MF_BYCOMMAND | MF_CHECKED );
}
else
{
menu.CheckMenuItem( IDM_SHOW_LINE6, MF_BYCOMMAND | MF_UNCHECKED );
}
//<2F><><EFBFBD><EFBFBD>7
if (m_pHaveDrawLineFlag[6])
{
menu.CheckMenuItem( IDM_SHOW_LINE7, MF_BYCOMMAND | MF_CHECKED );
}
else
{
menu.CheckMenuItem( IDM_SHOW_LINE7, MF_BYCOMMAND | MF_UNCHECKED );
}
//<2F><><EFBFBD><EFBFBD>8
if (m_pHaveDrawLineFlag[7])
{
menu.CheckMenuItem( IDM_SHOW_LINE8, MF_BYCOMMAND | MF_CHECKED );
}
else
{
menu.CheckMenuItem( IDM_SHOW_LINE8, MF_BYCOMMAND | MF_UNCHECKED );
}
//<2F><><EFBFBD><EFBFBD>9
if (m_pHaveDrawLineFlag[8])
{
menu.CheckMenuItem( IDM_SHOW_LINE9, MF_BYCOMMAND | MF_CHECKED );
}
else
{
menu.CheckMenuItem( IDM_SHOW_LINE9, MF_BYCOMMAND | MF_UNCHECKED );
}
//<2F><><EFBFBD><EFBFBD>10
if (m_pHaveDrawLineFlag[9])
{
menu.CheckMenuItem( IDM_SHOW_LINE10, MF_BYCOMMAND | MF_CHECKED );
}
else
{
menu.CheckMenuItem( IDM_SHOW_LINE10, MF_BYCOMMAND | MF_UNCHECKED );
}
*/
//<2F><><EFBFBD><EFBFBD>14 <20><><EFBFBD>պ<EFBFBD><D5BA><EFBFBD>
if (m_pHaveDrawLineFlag[13])
{
menu.CheckMenuItem( ID_SHOW_PD10, MF_BYCOMMAND | MF_CHECKED );
}
else
{
menu.CheckMenuItem( ID_SHOW_PD10, MF_BYCOMMAND | MF_UNCHECKED );
}
//<2F><><EFBFBD><EFBFBD>11 Ӧ<><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (m_pHaveDrawLineFlag[10])
{
menu.CheckMenuItem( ID_SHOW_HS11, MF_BYCOMMAND | MF_CHECKED );
}
else
{
menu.CheckMenuItem( ID_SHOW_HS11, MF_BYCOMMAND | MF_UNCHECKED );
}
//<2F><><EFBFBD><EFBFBD>12 <20><><EFBFBD><EFBFBD>Χ<EFBFBD><CEA7>
if (m_pHaveDrawLineFlag[11])
{
menu.CheckMenuItem( ID_SHOW_TC12, MF_BYCOMMAND | MF_CHECKED );
}
else
{
menu.CheckMenuItem( ID_SHOW_TC12, MF_BYCOMMAND | MF_UNCHECKED );
}
if (m_bAutoMove)
{
menu.CheckMenuItem( IDM_AUTO_MOVE, MF_BYCOMMAND | MF_CHECKED );
}
else
{
menu.CheckMenuItem( IDM_AUTO_MOVE, MF_BYCOMMAND | MF_UNCHECKED );
}
if (m_guidePointMode == 1)
{
menu.CheckMenuItem( IDM_GUIDE_FLY1, MF_BYCOMMAND | MF_CHECKED );
}
else
{
menu.CheckMenuItem( IDM_GUIDE_FLY1, MF_BYCOMMAND | MF_UNCHECKED );
}
if (m_guidePointMode == 2)
{
menu.CheckMenuItem( IDM_GUIDE_FLY2, MF_BYCOMMAND | MF_CHECKED );
}
else
{
menu.CheckMenuItem( IDM_GUIDE_FLY2, MF_BYCOMMAND | MF_UNCHECKED );
}
if (m_bPlotDemArea)
{
menu.CheckMenuItem( ID_MENU_PLOTDEMAREA, MF_BYCOMMAND | MF_CHECKED );
}
else
{
menu.CheckMenuItem( ID_MENU_PLOTDEMAREA, MF_BYCOMMAND | MF_UNCHECKED );
}
if (m_bEnableShowADSB)
{
menu.CheckMenuItem( ID_MENU_ADSB, MF_BYCOMMAND | MF_CHECKED );
}
else
{
menu.CheckMenuItem( ID_MENU_ADSB, MF_BYCOMMAND | MF_UNCHECKED );
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݲ˵<DDB2>
menu.GetSubMenu( 0 )->TrackPopupMenu( TPM_LEFTALIGN | TPM_RIGHTBUTTON, pt.x, pt.y, this );
}
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>֤<EFBFBD><D6A4><EFBFBD>˻<EFBFBD><CBBB><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//ʵ<><CAB5>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD>Ȼ<EFBFBD>õ<EFBFBD>ͼ<EFBFBD><CDBC>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
// 2<><32><EFBFBD>ٸ<EFBFBD><D9B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><CBBB>ĵ<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD>ͼ
void CGISDlg::AutomaticMoveMap(double dX, double dY)
{
//<2F><><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD><EFBFBD>صľ<D8B5>γ<EFBFBD><CEB3>ֵ
double lonDegreePerPixel = 0;
double latDegreePerPixel = 0;
mapWindow::IExtentsPtr pExtents;
pExtents = m_map.GetExtents();
double xMin = 0;
double yMin = 0;
double zMin = 0;
double xMax = 0;
double yMax = 0;
double zMax = 0;
pExtents->GetBounds(&xMin,&yMin,&zMin,&xMax,&yMax,&zMax);
if(dX < xMin || dX > xMax || dY < yMin || dY > yMax)
{
lonDegreePerPixel = (xMax-xMin) * m_onePerWidth;
latDegreePerPixel = (yMax-yMin) * m_onePerHeight;
//<2F><>ʾ<EFBFBD><CABE>Χ
double xNewMin = 0;
double yNewMin = 0;
double zNewMin = 0;
double xNewMax = 0;
double yNewMax = 0;
double zNewMax = 0;
//<2F><><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
double lonIncrement = lonDegreePerPixel*m_mapAreaHalfWidth;
//γ<>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
double latIncrement = latDegreePerPixel*m_mapAreaHalfHeight;
xNewMin = dX - lonIncrement;
xNewMax = dX + lonIncrement;
yNewMin = dY - latIncrement;
yNewMax = dY + latIncrement;
//<2F><><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><C2B5><EFBFBD>ʾ<EFBFBD><CABE>Χ
pExtents->SetBounds(xNewMin,yNewMin,zNewMin,xNewMax,yNewMax,zNewMax);
m_map.SetExtents(pExtents);
}
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ի<EFBFBD><D4BB><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>γ<EFBFBD><CEB3><EFBFBD><EFBFBD>Ϣ
void CGISDlg::OnShowLonLatInfo()
{
if (!m_bHaveShowLonLatDlg) //δ<><CEB4><EFBFBD><EFBFBD><EFBFBD>Ի<EFBFBD><D4BB><EFBFBD><EFBFBD>򵯳<EFBFBD><F2B5AFB3>Ի<EFBFBD><D4BB><EFBFBD><EFBFBD><EFBFBD>ʾ
{
m_bHaveShowLonLatDlg = true;
m_pLonLatDlg->SetLonLatInfo(0,0);
m_pLonLatDlg->ShowWindow(SW_SHOW);
}
else
{
m_bHaveShowLonLatDlg = false;
m_pLonLatDlg->ShowWindow(SW_HIDE);
}
}
//<2F><><EFBFBD><EFBFBD><><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>
void CGISDlg::OnRemoveAllLayers()
{
if (!m_bHaveAddMap)
{
return;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
OnEraseTrack();
for(int i=0;i<MAX_PLANE_NUM_ADS;i++)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><CBBB>ı<EFBFBD><C4B1>ͼ<EFBFBD><CDBC>
if (m_UAVFlyTrackLayerID_ADS[i] != -1)
{
//m_map.ClearLabels(m_UAVFlyTrackLayerID_ADS[i]);
//m_map.ClearDrawing(m_UAVFlyTrackLayerID_ADS[i]);
m_map.RemoveLayer(m_UAVFlyTrackLayerID_ADS[i]);
m_UAVFlyTrackLayerID_ADS[i] = -1;
m_bWithin100km_ADS[i] = false;
}
}
//<2F>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>
if (m_drawPlanFlyLine != -1)
{
m_map.ClearDrawing(m_drawPlanFlyLine);
m_drawPlanFlyLine = -1;
}
if(m_targetDrawLayerID != -1)
{
m_map.RemoveLayer(m_targetDrawLayerID);
m_targetDrawLayerID = -1;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><E6BCB0><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>
if (m_longGroundID != 0)
{
ClearPointShape(m_longGroundID);
m_longGroundID = 0;
}
if (m_visbleCircleLayerID > 0)
{
m_map.GetShapefile(m_visbleCircleLayerID).EditClear();
m_visbleCircleLayerID = -1;
}
if (m_notVisibleCircleLayerID > 0)
{
m_map.GetShapefile(m_notVisibleCircleLayerID).EditClear();
m_notVisibleCircleLayerID = -1;
}
if (m_visiRealCircleLayerID > 0)
{
m_map.GetShapefile(m_visiRealCircleLayerID).EditClear();
m_visiRealCircleLayerID = -1;
}
if (m_notVisiRealCircleLayerID > 0)
{
m_map.GetShapefile(m_notVisiRealCircleLayerID).EditClear();
m_notVisiRealCircleLayerID = -1;
}
if (m_RealCircleLayerID > 0)
{
m_map.GetShapefile(m_RealCircleLayerID).EditClear();
m_RealCircleLayerID = -1;
}
for (int i=0;i<20;i++)
{
if (m_longContourLineID[i] > 0)
{
m_map.GetShapefile(m_longContourLineID[i]).EditClear();
m_longContourLineID[i] = -1;
}
if (m_longContourTextID[i] != 0)
{
ClearPointShape(m_longContourTextID[i]);
m_longContourTextID[i] = 0;
}
}
for (int i=0;i<500;i++)
{
if (m_DemRegionLayerID[i] > 0)
{
m_map.GetShapefile(m_DemRegionLayerID[i]).EditClear();
m_DemRegionLayerID[i] = -1;
}
}
if (m_longSelectLineID > 0)
{
m_map.GetShapefile(m_longSelectLineID).EditClear();
m_longSelectLineID = -1;
}
if (m_longLabelPlotID != 0)
{
ClearPointShape(m_longLabelPlotID);
m_longLabelPlotID = 0;
}
if (m_longLinePointID != 0)
{
ClearPointShape(m_longLinePointID);
m_longLinePointID = 0;
}
if (m_crashAreaLayerID > 0)
{
m_map.GetShapefile(m_crashAreaLayerID).EditClear();
m_crashAreaLayerID = -1;
}
if (m_fightRegionLayerID > 0)
{
m_map.GetShapefile(m_fightRegionLayerID).EditClear();
m_fightRegionLayerID = -1;
}
//<2F><><EFBFBD><EFBFBD>̷߳<DFB3><CCB7><EFBFBD>ͼ<EFBFBD><CDBC>
for (int i=0;i<g_iDemAltPtNum;i++)
{
m_map.RemoveLayer(g_lDemAltLayerID[i]);
if (g_lDemAltDisLayerID[i] > 0)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ʸ<EFBFBD><CAB8>ͼ<EFBFBD><CDBC>
ClearPointShape(g_lDemAltDisLayerID[i]);
g_lDemAltDisLayerID[i] = -1;
}
if (g_lDemPtNumLayerID[i] > 0)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ʸ<EFBFBD><CAB8>ͼ<EFBFBD><CDBC>
ClearPointShape(g_lDemPtNumLayerID[i]);
g_lDemPtNumLayerID[i] = -1;
}
}
//<2F><><EFBFBD><EFBFBD><EFBFBD>ǵ<EFBFBD><C7B5><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>
for (int i=0;i<g_iMarkerPtNum;i++)
{
if (g_lMarkerLayerID[i] > 0)
{
ClearPointShape(g_lMarkerLayerID[i]);
g_lMarkerLayerID[i] = 0;
}
}
m_designLinePointNum = 0;
//m_map.RemoveAllLayers();
m_map.ClearDrawing(m_designLineLayerID);
m_map.ClearDrawing(m_designLineLayerID2);
m_map.RemoveLayer(m_designLineLayerID);
m_map.RemoveLayer(m_designLineLayerID2);
m_map.RemoveAllLayers();
memset(m_pDesignLineStruct, 0, sizeof(PtStruct)*m_lineMaxPointNum);
m_Layer->RemoveAll();
m_map.Redraw();
for (int i=0;i<13;i++)
{
m_pHaveDrawLineFlag[i] = false;
}
//<2F><><EFBFBD>õ<EFBFBD>ͼ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD>ɫΪ<C9AB><CEAA>ɫ
m_map.SetBackColor(RGB(0,0,0));
//<2F>Ƿ<EFBFBD><C7B7>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD>ͼ
m_bHaveAddMap = false;
}
//<2F><><EFBFBD><EFBFBD><><CDBC><EFBFBD><EFBFBD><EFBFBD>
void CGISDlg::OnLayerManage()
{
m_Layer->ShowWindow(SW_SHOW);
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
LRESULT CGISDlg::OnSetLayerStatus(WPARAM wParam, LPARAM lParam)
{
if (lParam == 0) //<2F><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>
{
m_map.SetLayerVisible(wParam, false);
}
else if (lParam == 1) //<2F><>ʾͼ<CABE><CDBC>
{
m_map.SetLayerVisible(wParam, true);
}
return 0;
}
BEGIN_EVENTSINK_MAP(CGISDlg, CBCGPDialog)
ON_EVENT(CGISDlg, IDC_MAP1, 1, CGISDlg::MouseDownMap1, VTS_I2 VTS_I2 VTS_I4 VTS_I4)
ON_EVENT(CGISDlg, IDC_MAP1, 2, CGISDlg::MouseUpMap1, VTS_I2 VTS_I2 VTS_I4 VTS_I4)
ON_EVENT(CGISDlg, IDC_MAP1, 3, CGISDlg::MouseMoveMap1, VTS_I2 VTS_I2 VTS_I4 VTS_I4)
ON_EVENT(CGISDlg, IDC_MAP1, DISPID_DBLCLICK, CGISDlg::MouseDblClickMap1, VTS_NONE)
END_EVENTSINK_MAP()
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
void CGISDlg::MouseDownMap1(short Button, short Shift, long x, long y)
{
double dX = 0;
double dY = 0;
GLOBAL_X = x;
GLOBAL_Y = y;
CString str_bt;
TRACE(_T("mapWindow clicked\n"));
// TRACE(_T(str_bt.Format("%d",Button)));
// ѡ<><D1A1><EFBFBD>ǵ<EFBFBD>ʱ
if (g_bSelectMarker && (Button == 1))
{
g_bSelectMarker = false;
//TRACE(g_bSelectMarker);
// return;
}
if (m_bHaveShowDistanceDlg && (Button == 1))
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_map.PixelToProj(x,y, &dX, &dY);
//<2F><><EFBFBD>õ<EFBFBD>ľ<EFBFBD><C4BE>ȡ<EFBFBD>γ<EFBFBD><CEB3>
m_pHZDistanceDlg->SetPtCoordinate(dX, dY);
}
/***************************************<2A><><EFBFBD><EFBFBD><EFBFBD> by Wu 2023.10.16*****************************************/
if (m_bPolylineMeasure && (Button == 1))
{
if (m_bEndMeasure)
{
ClearPloylineMeasure();
m_bEndMeasure = false;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_map.PixelToProj(x,y, &dX, &dY);
m_numPolylineMeasurePts++;
m_posPolylineMeasurePts[m_numPolylineMeasurePts-1][0] = dX;
m_posPolylineMeasurePts[m_numPolylineMeasurePts-1][1] = dY;
if (m_numPolylineMeasurePts==1) //<2F><><EFBFBD>
{
AddPointShapeLayer(m_polylineMeasurePtLayerID[0], dX, dY, _T("<EFBFBD><EFBFBD><EFBFBD>"), _T(""), RGB(255,0,0));//<2F><>ע<EFBFBD><D7A2><EFBFBD>
m_bMeasureDrag = true;
return;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD>
if (m_polylineMeasureLineLayerID==-1)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>
CreateEmptyShapfile(m_polylineMeasureLineLayerID, 1, RGB(0,255,0));
}
if (m_numPolylineMeasurePts==2)
{
AddOnePoint2Shapfile(m_polylineMeasureLineLayerID, 1, m_posPolylineMeasurePts[0][0], m_posPolylineMeasurePts[0][1]);
}
AddOnePoint2Shapfile(m_polylineMeasureLineLayerID, 1, dX, dY);
if (m_polylineMeasurePtLayerID[1]==-1)
{
CreateEmptyShapfile(m_polylineMeasurePtLayerID[1], 0, RGB(0,255,0));
mapWindow::IShapeDrawingOptionsPtr pShapeDrawingOption;
pShapeDrawingOption.CreateInstance("MapWinGIS.ShapeDrawingOptions");
pShapeDrawingOption->FillColor = RGB(0,255,0);
pShapeDrawingOption->PointSize = 12;
pShapeDrawingOption->PutPointType(mapWindow::tkPointSymbolType::ptSymbolStandard);
pShapeDrawingOption->PutPointShape(mapWindow::tkPointShapeType::ptShapeStar);
(m_map.GetShapefile(m_polylineMeasurePtLayerID[1])).SetDefaultDrawingOptions(pShapeDrawingOption);
}
//AddOnePoint2Shapfile(m_polylineMeasurePtLayerID[1],0,dX, dY);
//<2F><><EFBFBD>ƽڵ<C6BD>
mapWindow::IPointPtr pintPtr;
pintPtr.CreateInstance("MapWinGIS.Point");
mapWindow::IShapePtr shapePtr;
shapePtr.CreateInstance("MapWinGIS.Shape");
shapePtr->Create(mapWindow::SHP_POINT);
//<2F><><EFBFBD><EFBFBD>
pintPtr->x = dX;
//γ<><CEB3>
pintPtr->y = dY;
long i = m_numPolylineMeasurePts-2;
shapePtr->InsertPoint(pintPtr, &i);
//<2F><><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><CAB8>
(m_map.GetShapefile(m_polylineMeasurePtLayerID[1])).EditInsertShape(shapePtr, &i);
//<2F><><EFBFBD>Ʋ<EFBFBD><C6B2><EFBFBD>ע<EFBFBD><D7A2>
if (m_polylineMeasureLabelLayerID!=-1)
{
m_map.ClearDrawing(m_polylineMeasureLabelLayerID);
}
m_polylineMeasureLabelLayerID = m_map.NewDrawing(1);
DrawDistLabel(m_polylineMeasureLabelLayerID,m_posPolylineMeasurePts,m_numPolylineMeasurePts,1);
}
//<2F>Ҽ<EFBFBD><D2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (m_bPolylineMeasure && (Button == 2))
{
EndPolylineMessure();
return;
}
/*******************************************************************************************************/
/*******************************************by Wu 2023.09.14*******************************************/
//ѡ<><D1A1>Ҫ<EFBFBD><D2AA>
if (m_bSelectFeatureFlag && (Button == 1))
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>γ<EFBFBD><CEB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_map.PixelToProj(x,y, &dX, &dY);
double pt[2] = {dX,dY};
m_lineSelectedID = IsSelectLine(pt);
ClearHighLightLine();
if (m_lineSelectedID==11) //<2F><>ʱ<EFBFBD><CAB1><EFBFBD>λ<EFBFBD><CEBB>պ<EFBFBD><D5BA><EFBFBD>
{
return;
}
if (m_lineSelectedID>0)
{
m_editLineDataGroup = m_ShowedLineDataList[m_lineSelectedID];
DrawHighLightLine(m_editLineDataGroup.linePts,m_editLineDataGroup.linePointNum);
}
}
//<2F><><EFBFBD>պ<EFBFBD><D5BA>߱༭
if (m_bEditLine && (Button == 1))
{
if (m_lineSelectedID<=0)
{
return;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>γ<EFBFBD><CEB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_map.PixelToProj(x,y, &dX, &dY);
m_iPtSel=GetPtSel(m_editLineDataGroup.pts,m_editLineDataGroup.pointNum,x,y);
if (m_iPtSel<0) //ѡ<>зǽڵ㣬<DAB5><E3A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
//m_editLineDataGroup = m_ShowedLineDataList[m_lineSelectedID];
double pt[2] = {dX,dY};
vector<double> lineX,lineY;
TransformToVectorPoints(m_editLineDataGroup,lineX,lineY);
int addPointPos = topologicalAnalysis.isPointInPolyLine(pt,lineX,lineY);
if (addPointPos==0) //<2F><><EFBFBD><EFBFBD><EFBFBD><E3B2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
return;
}
if (m_lineSelectedID==11)
{
if (addPointPos>m_editLineDataGroup.linePointNum-4) return; //<2F><><EFBFBD>պ<EFBFBD><D5BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4,5,6<><36><EFBFBD>߲<EFBFBD><DFB2>ñ༭
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD>
double linePt1[2] = {m_editLineDataGroup.linePts[addPointPos-1].dX,m_editLineDataGroup.linePts[addPointPos-1].dY};
double linePt2[2] = {m_editLineDataGroup.linePts[addPointPos].dX,m_editLineDataGroup.linePts[addPointPos].dY};
double targetPt[2] = {0.0,0.0};
topologicalAnalysis.GetPointToLineVerticalCross(linePt1,linePt2,pt,targetPt);
//<2F><><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD>
AddPointInLine(addPointPos,targetPt,m_editLineDataGroup);
if (m_distLabelLayer!=-1)
{
m_map.ClearDrawing(m_distLabelLayer);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>λ<EFBFBD>DZ<EFBFBD><C7B1>
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĺ<EFBFBD><C4BA><EFBFBD>
ClearDrawedLine(m_editLineDataGroup.lineID-1);
//<2F><><EFBFBD><E6BABD>
DrawFlyLine(m_editLineDataGroup);
}
}
//<2F>Ҽ<EFBFBD><D2BC><EFBFBD><E0BCAD><EFBFBD><EFBFBD>
if (m_bEditLine && (Button == 2))
{
double lon,lat;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>γ<EFBFBD><CEB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_map.PixelToProj(x,y, &lon, &lat);
int selectedPointID = GetPtSel(m_editLineDataGroup.pts,m_editLineDataGroup.pointNum,x,y);
if (selectedPointID>=0)
{
if (m_lineSelectedID==11)
{
if (selectedPointID>=m_editLineDataGroup.pointNum-3 || selectedPointID==0) //<2F><><EFBFBD>պ<EFBFBD><D5BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1,4,5,6,<2C><><EFBFBD><EFBFBD>
{
return;
}
}
ShowModifyPointDlg(selectedPointID);
return;
}
ShowEditSaveDlg();
return;
}
/***************************************************************************************************************/
//<2F><><EFBFBD>ں<EFBFBD><DABA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽʱ<CABD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EAB4A6>ѡ<EFBFBD><D1A1>ģʽʱ
if (m_bLineDesign && (Button == 1))
{
////if (m_map.GetCursorMode()!=5) //<2F><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ͷ״̬
////{
// m_map.SetCursorMode(5);
///*}*/
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>γ<EFBFBD><CEB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_map.PixelToProj(x,y, &dX, &dY);
if (m_bPtEdit ) //<2F><><EFBFBD>ں<EFBFBD><DABA><EFBFBD>༭ģʽʱ
{
m_iPtSel=GetPtSel(x,y);
}
if (m_bSetPointModel)//<2F>õ<EFBFBD>
{
POINT pt;
GetCursorPos( &pt );
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>γ<EFBFBD><CEB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_map.PixelToProj(x,y, &dX, &dY);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_curDesignPoint.nPt = m_designLinePointNum+1;
//<2F><><EFBFBD><EFBFBD><E3BEAD>
m_curDesignPoint.dX = dX;
//<2F><><EFBFBD><EFBFBD>γ<EFBFBD><CEB3>
m_curDesignPoint.dY = dY;
m_pDesignLineStruct[m_designLinePointNum] = m_curDesignPoint;
//<2F><><EFBFBD><EFBFBD><EFBFBD>ż<EFBFBD><C5BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1
m_designLinePointNum++;
m_bAddNewPoint = true;
}
if (m_bPtDel)//ɾ<><C9BE>
{
int iSel=GetPtSel(x,y);
int i=0;
if (iSel!=-1)
{
for (i=iSel;i<m_designLinePointNum-1;i++)
{
m_pDesignLineStruct[i]=m_pDesignLineStruct[i+1];
m_pDesignLineStruct[i].nPt=m_pDesignLineStruct[i].nPt-1;
}
m_designLinePointNum--;
}
}
DrawLineDesign();
}
//<2F>º<EFBFBD><C2BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2016.01.05
//<2F><><EFBFBD><EFBFBD><EFBFBD>ں<EFBFBD><DABA><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD><C6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EAB4A6>ѡ<EFBFBD><D1A1>ģʽʱ
if (m_bHaveShowLineDesign && (Button == 1))
{
m_map.PixelToProj(x,y, &dX, &dY);
if (m_bLDSetPoint)
{
POINT pt;
GetCursorPos(&pt);
//<2F><><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>γ<EFBFBD><CEB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_map.PixelToProj(x, y, &dX, &dY);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_CurNewDesignPt.nPt = m_NowNumLineDesign + 1;
//<2F><>ǰ<EFBFBD><C7B0>Ƶĺ<C6B5><C4BA><EFBFBD>ľ<EFBFBD><C4BE><EFBFBD>
m_CurNewDesignPt.dX = dX;
//<2F><>ǰ<EFBFBD><C7B0>Ƶĺ<C6B5><C4BA><EFBFBD><EFBFBD>γ<EFBFBD><CEB3>
m_CurNewDesignPt.dY = dY;
//<2F><>ǰ<EFBFBD><C7B0>Ƶĺ<C6B5><C4BA><EFBFBD>ĸ߶<C4B8>
m_CurNewDesignPt.nH = 0;
//<2F><>ǰ<EFBFBD><C7B0>Ƶĺ<C6B5><C4BA><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD>
m_CurNewDesignPt.nV = 0;
//<2F><>ǰ<EFBFBD><C7B0>Ƶĺ<C6B5><C4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_CurNewDesignPt.ch1 = 0x02;
//<2F><>ǰ<EFBFBD><C7B0>Ƶĺ<C6B5><C4BA><EFBFBD>ĺ<EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_CurNewDesignPt.ch2 = 0x01;
m_pLineDesign->ShowLonLat(dX, dY);
m_pNewDesignLineStruct[m_NowNumLineDesign] = m_CurNewDesignPt;
m_pLineDesign->InsertPt(m_CurNewDesignPt);
//<2F><><EFBFBD><EFBFBD><EFBFBD>ż<EFBFBD><C5BC><EFBFBD><EFBFBD><EFBFBD>+1
m_NowNumLineDesign++;
//CLineDesign dlg;
//dlg.ShowLonLat(m_curDesignPoint.dX, m_curDesignPoint.dX);
}
}
//<2F><><EFBFBD><EFBFBD>Ҽ<EFBFBD><D2BC><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݲ˵<DDB2>
if (Button == 2 && !m_bLineDesign)
{
//ɾ<><C9BE><EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1>
m_map.ClearDrawing(m_tempLayerID);
m_map.Redraw();
//<2F><>ʾ<EFBFBD><CABE>ݲ˵<DDB2>
CMenu menu;
POINT pt;
GetCursorPos( &pt );
bool bSel = false;
for (int i = 0;i<255;i++)
{
if (m_targets[i].id <= 0)
{
continue;
}
double pixX = 0;
double pixY = 0;
m_map.ProjToPixel(m_targets[i].lon,m_targets[i].lat, &pixX, &pixY);
if (fabs(x-pixX)<5 && fabs(y-pixY)<5 )
{
bSel = true;
m_targetSelID = m_targets[i].id;
break;
}
}
if (bSel)
{
menu.LoadMenu(IDR_MENU_TARGET);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݲ˵<DDB2>
menu.GetSubMenu( 0 )->TrackPopupMenu( TPM_LEFTALIGN | TPM_LEFTBUTTON, pt.x,pt.y, this );
return;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD>ڻط<DABB>ģʽʱ<CABD><CAB1><EFBFBD><EFBFBD><EFBFBD>á<EFBFBD><C3A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><D7B0><EFBFBD>Ӳ˵<D3B2><CBB5><EFBFBD><EFBFBD>Ȼ<EFBFBD>ɫ
menu.LoadMenu(IDR_MENU2);
//<2F><><EFBFBD><EFBFBD>1
if (m_pHaveDrawLineFlag[0])
{
menu.CheckMenuItem( IDM_SHOW_LINE1, MF_BYCOMMAND | MF_CHECKED );
}
else
{
menu.CheckMenuItem( IDM_SHOW_LINE1, MF_BYCOMMAND | MF_UNCHECKED );
}
//<2F><><EFBFBD><EFBFBD>2
if (m_pHaveDrawLineFlag[1])
{
menu.CheckMenuItem( IDM_SHOW_LINE2, MF_BYCOMMAND | MF_CHECKED );
}
else
{
menu.CheckMenuItem( IDM_SHOW_LINE2, MF_BYCOMMAND | MF_UNCHECKED );
}
//<2F><><EFBFBD><EFBFBD>3
if (m_pHaveDrawLineFlag[2])
{
menu.CheckMenuItem( IDM_SHOW_LINE3, MF_BYCOMMAND | MF_CHECKED );
}
else
{
menu.CheckMenuItem( IDM_SHOW_LINE3, MF_BYCOMMAND | MF_UNCHECKED );
}
//<2F><><EFBFBD><EFBFBD>4
if (m_pHaveDrawLineFlag[3])
{
menu.CheckMenuItem( IDM_SHOW_LINE4, MF_BYCOMMAND | MF_CHECKED );
}
else
{
menu.CheckMenuItem( IDM_SHOW_LINE4, MF_BYCOMMAND | MF_UNCHECKED );
}
//<2F><><EFBFBD><EFBFBD>5
if (m_pHaveDrawLineFlag[4])
{
menu.CheckMenuItem( IDM_SHOW_LINE5, MF_BYCOMMAND | MF_CHECKED );
}
else
{
menu.CheckMenuItem( IDM_SHOW_LINE5, MF_BYCOMMAND | MF_UNCHECKED );
}
/*
//<2F><><EFBFBD><EFBFBD>6
if (m_pHaveDrawLineFlag[5])
{
menu.CheckMenuItem( IDM_SHOW_LINE6, MF_BYCOMMAND | MF_CHECKED );
}
else
{
menu.CheckMenuItem( IDM_SHOW_LINE6, MF_BYCOMMAND | MF_UNCHECKED );
}
//<2F><><EFBFBD><EFBFBD>7
if (m_pHaveDrawLineFlag[6])
{
menu.CheckMenuItem( IDM_SHOW_LINE7, MF_BYCOMMAND | MF_CHECKED );
}
else
{
menu.CheckMenuItem( IDM_SHOW_LINE7, MF_BYCOMMAND | MF_UNCHECKED );
}
//<2F><><EFBFBD><EFBFBD>8
if (m_pHaveDrawLineFlag[7])
{
menu.CheckMenuItem( IDM_SHOW_LINE8, MF_BYCOMMAND | MF_CHECKED );
}
else
{
menu.CheckMenuItem( IDM_SHOW_LINE8, MF_BYCOMMAND | MF_UNCHECKED );
}
//<2F><><EFBFBD><EFBFBD>9
if (m_pHaveDrawLineFlag[8])
{
menu.CheckMenuItem( IDM_SHOW_LINE9, MF_BYCOMMAND | MF_CHECKED );
}
else
{
menu.CheckMenuItem( IDM_SHOW_LINE9, MF_BYCOMMAND | MF_UNCHECKED );
}
//<2F><><EFBFBD><EFBFBD>10
if (m_pHaveDrawLineFlag[9])
{
menu.CheckMenuItem( IDM_SHOW_LINE10, MF_BYCOMMAND | MF_CHECKED );
}
else
{
menu.CheckMenuItem( IDM_SHOW_LINE10, MF_BYCOMMAND | MF_UNCHECKED );
}*/
//<2F><><EFBFBD><EFBFBD>14 <20><><EFBFBD>պ<EFBFBD><D5BA><EFBFBD>
if (m_pHaveDrawLineFlag[13])
{
menu.CheckMenuItem( ID_SHOW_PD10, MF_BYCOMMAND | MF_CHECKED );
}
else
{
menu.CheckMenuItem( ID_SHOW_PD10, MF_BYCOMMAND | MF_UNCHECKED );
}
//<2F><><EFBFBD><EFBFBD>11 Ӧ<><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (m_pHaveDrawLineFlag[10])
{
menu.CheckMenuItem( ID_SHOW_HS11, MF_BYCOMMAND | MF_CHECKED );
}
else
{
menu.CheckMenuItem( ID_SHOW_HS11, MF_BYCOMMAND | MF_UNCHECKED );
}
//<2F><><EFBFBD><EFBFBD>12 <20><><EFBFBD><EFBFBD>Χ<EFBFBD><CEA7>
if (m_pHaveDrawLineFlag[11])
{
menu.CheckMenuItem( ID_SHOW_TC12, MF_BYCOMMAND | MF_CHECKED );
}
else
{
menu.CheckMenuItem( ID_SHOW_TC12, MF_BYCOMMAND | MF_UNCHECKED );
}
if (m_bAutoMove)
{
menu.CheckMenuItem( IDM_AUTO_MOVE, MF_BYCOMMAND | MF_CHECKED );
}
else
{
menu.CheckMenuItem( IDM_AUTO_MOVE, MF_BYCOMMAND | MF_UNCHECKED );
}
if (m_guidePointMode == 1)
{
menu.CheckMenuItem( IDM_GUIDE_FLY1, MF_BYCOMMAND | MF_CHECKED );
}
else
{
menu.CheckMenuItem( IDM_GUIDE_FLY1, MF_BYCOMMAND | MF_UNCHECKED );
}
if (m_guidePointMode == 2)
{
menu.CheckMenuItem( IDM_GUIDE_FLY2, MF_BYCOMMAND | MF_CHECKED );
}
else
{
menu.CheckMenuItem( IDM_GUIDE_FLY2, MF_BYCOMMAND | MF_UNCHECKED );
}
if (m_bPlotDemArea)
{
menu.CheckMenuItem( ID_MENU_PLOTDEMAREA, MF_BYCOMMAND | MF_CHECKED );
}
else
{
menu.CheckMenuItem( ID_MENU_PLOTDEMAREA, MF_BYCOMMAND | MF_UNCHECKED );
}
if (m_bEnableShowADSB)
{
menu.CheckMenuItem( ID_MENU_ADSB, MF_BYCOMMAND | MF_CHECKED );
}
else
{
menu.CheckMenuItem( ID_MENU_ADSB, MF_BYCOMMAND | MF_UNCHECKED );
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݲ˵<DDB2>
menu.GetSubMenu( 0 )->TrackPopupMenu( TPM_LEFTALIGN | TPM_RIGHTBUTTON, pt.x, pt.y, this );
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>γ<EFBFBD><CEB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_map.PixelToProj(x, y, &m_guidePtInfo.guidePtLon, &m_guidePtInfo.guidePtLat);
}
if (Button == 2 && m_bLineDesign) //<2F><><EFBFBD>߱༭ʱ<E0BCAD><CAB1>ֹͣ<CDA3>
{
CMenu tmenu;
tmenu.LoadMenu(IDR_FLOATINGMENU);
CRect rc=CRect(0,0,x,y);
ClientToScreen(&rc);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݲ˵<DDB2>
tmenu.GetSubMenu( 0 )->TrackPopupMenu( TPM_LEFTALIGN | TPM_LEFTBUTTON, rc.right,rc.bottom, this );
return;
}
//<2F><><EFBFBD>ڵر<DAB5><D8B1>Ի<EFBFBD><D4BB><EFBFBD>ѡ<EFBFBD><D1A1>ģʽʱ<CABD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EAB4A6>ѡ<EFBFBD><D1A1>ģʽ,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (m_bSelectDropPoint && (m_map.GetCursorMode() == 3) && (Button == 1))
{
m_bSelectDropPoint = false;
double _ptLon = 0.0, _ptLat = 0.0;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>γ<EFBFBD><CEB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_map.PixelToProj(x, y, &_ptLon, &_ptLat);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
if (m_pTargetDlg && m_pTargetDlg->GetSafeHwnd())
{
m_pTargetDlg->ShowPointPosition(_ptLon,_ptLat);
}
}
//<2F><><EFBFBD>ڿ<EFBFBD><DABF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ի<EFBFBD><D4BB><EFBFBD>ѡ<EFBFBD><D1A1>ģʽʱ<CABD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EAB4A6>ѡ<EFBFBD><D1A1>ģʽ,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (g_bSelectDropPoint && (m_map.GetCursorMode() == 3) && (Button == 1))
{
g_bSelectDropPoint = false;
double _ptLon = 0.0, _ptLat = 0.0;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>γ<EFBFBD><CEB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_map.PixelToProj(x, y, &_ptLon, &_ptLat);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ,<2C><><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD>ӷ<EFBFBD><D3B7><EFBFBD>
if (m_dlgLightRegion.GetSafeHwnd())
{
m_dlgLightRegion.ShowPointPosition(_ptLon,_ptLat);
m_dlgLightRegion.LosBetweenTwoPoints();
}
}
//<2F>̷߳<DFB3><CCB7><EFBFBD>ѡ<EFBFBD><D1A1>
if (g_bDemAnalysising && (Button == 1))
{
g_iDemPointNum++;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>γ<EFBFBD><CEB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
double _ptLon = 0.0, _ptLat = 0.0;
m_map.PixelToProj(x, y, &_ptLon, &_ptLat);
g_dDemPtLon[g_iDemPointNum-1] = _ptLon;
g_dDemPtLat[g_iDemPointNum-1] = _ptLat;
CString str;
str.Format(_T("%d"), g_iDemPointNum);
//<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ű<EFBFBD>ע
AddTextToPointShapeLayer(g_lDemPtNumLayerID[g_iDemPointNum-1], _ptLon, _ptLat, str, _T(""), RGB(255,0,0));
if (g_iDemPointNum >= g_iDemAltPtNum)
{
BCGPMessageBox(_T("<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>֧<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>10<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ̷߳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"));
g_bDemAnalysising = false;
m_DlgDemAlt.DrawDemAltBetweenPts(g_dDemPtLon, g_dDemPtLat, g_iDemPointNum);
if (m_DlgDemAlt.GetSafeHwnd())
{
m_DlgDemAlt.ShowWindow(TRUE);
}
}
}
//ѡ<><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (m_bGuideMode && (Button == 1))
{
m_bGuideMode = false;
m_map.PixelToProj(x,y,&m_guidePtInfo.guidePtLon,&m_guidePtInfo.guidePtLat);
DrawGuidePoint(m_guidePtInfo.guideMode,m_guidePtInfo.guidePtLon,m_guidePtInfo.guidePtLat);
switch(m_guidePointMode)
{
case 0:
break;
case 1:
{
m_struMapOut.cmd = MapCmd_Guide1;
m_struMapOut.lon = m_guidePtInfo.guidePtLon;
m_struMapOut.lat = m_guidePtInfo.guidePtLat;
::SendMessage(GetParent()->GetSafeHwnd(),MESSAGE_B8MAP, (int)(&m_struMapOut),0);
}
break;
case 2:
{
m_struMapOut.cmd = MapCmd_Guide2;
m_struMapOut.lon = m_guidePtInfo.guidePtLon;
m_struMapOut.lat = m_guidePtInfo.guidePtLat;
::SendMessage(GetParent()->GetSafeHwnd(),MESSAGE_B8MAP, (int)(&m_struMapOut),0);
}
break;
default:
break;
}
}
}
//<2F><><EFBFBD>˫<EFBFBD><CBAB><EFBFBD>¼<EFBFBD>
void CGISDlg::MouseDblClickMap1()
{
//<2F><><EFBFBD><EFBFBD><EFBFBD>̷߳<DFB3><CCB7><EFBFBD>
if (g_bDemAnalysising)
{
g_bDemAnalysising = false;
m_DlgDemAlt.DrawDemAltBetweenPts(g_dDemPtLon, g_dDemPtLat, g_iDemPointNum);
if (m_DlgDemAlt.GetSafeHwnd())
{
m_DlgDemAlt.ShowWindow(TRUE);
}
}
/*********************************by Wu 2023.09.20********************************************/
double dX = 0;
double dY = 0;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>γ<EFBFBD><CEB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_map.PixelToProj(GLOBAL_X,GLOBAL_Y, &dX, &dY);
//˫<><CBAB>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (m_bEditLine)
{
int ptSelected = GetPtSel(m_editLineDataGroup.pts,m_editLineDataGroup.pointNum,GLOBAL_X,GLOBAL_Y);
if (m_editLineDataGroup.lineID==11) //<2F><><EFBFBD>պ<EFBFBD><D5BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1,4,5,6<><36><EFBFBD><EFBFBD>
{
if (ptSelected==0 || (ptSelected>=m_editLineDataGroup.pointNum-3))
{
return;
}
}
if (ptSelected>=0)
{
if (m_distLabelLayer!=-1)
{
m_map.ClearDrawing(m_distLabelLayer);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>λ<EFBFBD>DZ<EFBFBD><C7B1>
}
RemovePointInLine(ptSelected,m_editLineDataGroup);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĺ<EFBFBD><C4BA><EFBFBD>
ClearDrawedLine(m_editLineDataGroup.lineID-1);
//<2F><><EFBFBD><E6BABD>
DrawFlyLine(m_editLineDataGroup);
}
}
/*********************************************************************************************/
if (g_b981APad) //ƽ<><C6BD>ģʽ˫<CABD><CBAB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
if (m_bPolylineMeasure)
{
EndPolylineMessure();
}
}
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><C6B6>¼<EFBFBD>
void CGISDlg::MouseMoveMap1(short Button, short Shift, long x, long y)
{
if (Button == 2)
{
return;
}
//<2F><>ʾ<EFBFBD><CABE>γ<EFBFBD><CEB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ
if (m_bHaveShowLonLatDlg && m_pLonLatDlg ->GetAutoEditStatus())
{
double dX = 0;
double dY = 0;
m_map.PixelToProj(x,y, &dX, &dY);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
m_pLonLatDlg->SetLonLatInfo(dX, dY);
}
/*****************************************by Wu 2023.09.14*******************************************/
//<2F><EFBFBD><E0BCAD><EFBFBD><EFBFBD>ʱ
if (m_bEditLine && Button == 1)
{
double dX = 0;
double dY = 0;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>γ<EFBFBD><CEB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_map.PixelToProj(x, y, &dX, &dY);
if (m_iPtSel==-1)
{
return;
}
if (m_editLineDataGroup.lineID==11) //<2F><><EFBFBD>պ<EFBFBD><D5BA><EFBFBD>1,4,5,6<><36><EFBFBD>ñ༭
{
if (m_iPtSel==0 || (m_iPtSel>=m_editLineDataGroup.pointNum-3))
{
return;
}
}
int n_pts = m_editLineDataGroup.pointNum;
bool isClosedLine;
if (m_editLineDataGroup.pts[n_pts-1].ch1==2) //<2F>DZպϺ<D5BA><CFBA><EFBFBD>
{
isClosedLine = false;
}
else
{
isClosedLine = true;
}
m_dragFlag = true;
m_editLineDataGroup.pts[m_iPtSel].dX = dX;
m_editLineDataGroup.pts[m_iPtSel].dY = dY;
m_editLineDataGroup.linePts[m_iPtSel].dX = dX;
m_editLineDataGroup.linePts[m_iPtSel].dY = dY;
if (m_iPtSel==0 && isClosedLine) //ѡ<><D1A1><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>Ҫͬ<D2AA><CDAC><EFBFBD>޸<EFBFBD><DEB8><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
int endpt = m_editLineDataGroup.linePointNum - 1;
m_editLineDataGroup.linePts[endpt].dX = dX;
m_editLineDataGroup.linePts[endpt].dY = dY;
}
if (m_iPtSel==n_pts-1 && !isClosedLine) //<2F>DZպϺ<D5BA><CFBA><EFBFBD><EFBFBD>յ<EFBFBD>
{
m_editLineDataGroup.linePts[n_pts].dX = dX;
m_editLineDataGroup.linePts[n_pts].dY = dY;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĺ<EFBFBD><C4BA><EFBFBD>
ClearDrawedLine(m_editLineDataGroup.lineID-1);
//<2F><><EFBFBD><E6BABD>
DrawFlyLine(m_editLineDataGroup);
//<2F><>ק<EFBFBD><D7A7><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>ͷ<EFBFBD>λ<EFBFBD><CEBB>
if (m_distLabelLayer!=-1)
{
m_map.ClearDrawing(m_distLabelLayer);
}
m_distLabelLayer = m_map.NewDrawing(1);
if (m_iPtSel==0)//ѡ<><D1A1><EFBFBD><EFBFBD><EFBFBD>
{
int endpt = m_editLineDataGroup.pointNum - 1;
DrawDistLabelEx(m_distLabelLayer,m_editLineDataGroup.pts[m_iPtSel].dX,m_editLineDataGroup.pts[m_iPtSel].dY,m_editLineDataGroup.pts[m_iPtSel+1].dX,m_editLineDataGroup.pts[m_iPtSel+1].dY,0);
if (isClosedLine)
{
DrawDistLabelEx(m_distLabelLayer,m_editLineDataGroup.pts[m_iPtSel].dX,m_editLineDataGroup.pts[m_iPtSel].dY,m_editLineDataGroup.pts[endpt].dX,m_editLineDataGroup.pts[endpt].dY,0);
}
}
else if (m_iPtSel==m_editLineDataGroup.pointNum - 1) //ѡ<><D1A1><EFBFBD>յ<EFBFBD>
{
DrawDistLabelEx(m_distLabelLayer,m_editLineDataGroup.pts[m_iPtSel].dX,m_editLineDataGroup.pts[m_iPtSel].dY,m_editLineDataGroup.pts[m_iPtSel-1].dX,m_editLineDataGroup.pts[m_iPtSel-1].dY,0);
if (isClosedLine)
{
DrawDistLabelEx(m_distLabelLayer,m_editLineDataGroup.pts[m_iPtSel].dX,m_editLineDataGroup.pts[m_iPtSel].dY,m_editLineDataGroup.pts[0].dX,m_editLineDataGroup.pts[0].dY,0);
}
}
else
{
DrawDistLabelEx(m_distLabelLayer,m_editLineDataGroup.pts[m_iPtSel].dX,m_editLineDataGroup.pts[m_iPtSel].dY,m_editLineDataGroup.pts[m_iPtSel-1].dX,m_editLineDataGroup.pts[m_iPtSel-1].dY,0);
DrawDistLabelEx(m_distLabelLayer,m_editLineDataGroup.pts[m_iPtSel].dX,m_editLineDataGroup.pts[m_iPtSel].dY,m_editLineDataGroup.pts[m_iPtSel+1].dX,m_editLineDataGroup.pts[m_iPtSel+1].dY,0);
}
return;
}
/*****************************************************************************************************************/
/*****************************************<2A><><EFBFBD><EFBFBD><EFBFBD> by Wu 2023.10.16************************************************/
if (m_bPolylineMeasure && m_bMeasureDrag)
{
double dX = 0;
double dY = 0;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>γ<EFBFBD><CEB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_map.PixelToProj(x, y, &dX, &dY);
//ɾ<><C9BE><EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1>
m_map.ClearDrawing(m_tempLayerID);
//<2F>½<EFBFBD><C2BD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ͼ<EFBFBD><CDBC>
m_tempLayerID = m_map.NewDrawing(1);
//<2F><><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1>
if (m_tempLayerID!=-1)
{
m_map.DrawLineEx(m_tempLayerID,m_posPolylineMeasurePts[m_numPolylineMeasurePts-1][0], m_posPolylineMeasurePts[m_numPolylineMeasurePts-1][1], dX, dY, 2, RGB(0,255,0));
//<2F><>ʾ<EFBFBD>߶εľ<CEB5><C4BE><EFBFBD>ͷ<EFBFBD>λ
DrawDistLabelEx(m_tempLayerID,m_posPolylineMeasurePts[m_numPolylineMeasurePts-1][0], m_posPolylineMeasurePts[m_numPolylineMeasurePts-1][1], dX, dY);
}
}
/****************************************************************************************************************/
//<2F>º<EFBFBD><C2BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ
if (m_bHaveShowLineDesign)
{
double dX = 0;
double dY = 0;
m_map.PixelToProj(x,y, &dX, &dY);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶԻ<C6B6><D4BB><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>γ<EFBFBD><CEB3>
//m_pLineDesign->ShowLonLat(dX, dY);
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ
if (m_bLineDesign)
{
double dX = 0;
double dY = 0;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>γ<EFBFBD><CEB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_map.PixelToProj(x, y, &dX, &dY);
if (m_bPtEdit ) //<2F><><EFBFBD>ں<EFBFBD><DABA><EFBFBD>༭ģʽʱ
{
if (m_iPtSel==-1)
{
return;
}
m_pDesignLineStruct[m_iPtSel].dX=dX;
m_pDesignLineStruct[m_iPtSel].dY=dY;
DrawLineDesign();
return;
//<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>ѡ<EFBFBD>д<EFBFBD><D0B4><EFBFBD>ĺ<EFBFBD><C4BA><EFBFBD>
if (BeMouseClickedLinePoint(m_curEditLinePoint, x, y))
{
//<2F><EFBFBD><E0BCAD><EFBFBD><EFBFBD>
m_pFlyLineDesign->EditPoint(dX, dY);
}
return;
}
if (m_bDesignFirstPoint)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD>ľ<EFBFBD><C4BE><EFBFBD>ͷ<EFBFBD>λ<EFBFBD><CEBB>
m_pLineSectDlg->InputPointCoordinate(dX, dY);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_curDesignPoint.nPt = m_designLinePointNum+1;
//<2F><><EFBFBD><EFBFBD><E3BEAD>
m_curDesignPoint.dX = dX;
//<2F><><EFBFBD><EFBFBD>γ<EFBFBD><CEB3>
m_curDesignPoint.dY = dY;
//<2F><><EFBFBD>Ӻ<EFBFBD><D3BA><EFBFBD>
m_pFlyLineDesign->AddPoint(m_curDesignPoint);
return;
}
//<2F>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ͼ<EFBFBD><CDBC>ʱ<EFBFBD><CAB1>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><E3A3AC><EFBFBD>±<EFBFBD>ע
if (m_designLinePointNum>0 && m_beTemLayerDrawing)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD>ľ<EFBFBD><C4BE><EFBFBD>ͷ<EFBFBD>λ<EFBFBD><CEBB>
m_pLineSectDlg->InputPointCoordinate(dX, dY);
//ɾ<><C9BE><EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1>
m_map.ClearDrawing(m_tempLayerID);
//<2F>½<EFBFBD><C2BD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ͼ<EFBFBD><CDBC>
m_tempLayerID = m_map.NewDrawing(1);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_curDesignPoint.nPt = m_designLinePointNum+1;
//<2F><><EFBFBD><EFBFBD><E3BEAD>
m_curDesignPoint.dX = dX;
//<2F><><EFBFBD><EFBFBD>γ<EFBFBD><CEB3>
m_curDesignPoint.dY = dY;
//<2F><><EFBFBD>Ӻ<EFBFBD><D3BA><EFBFBD>
m_pFlyLineDesign->AddPoint(m_curDesignPoint);
//<2F><><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1>
if (m_tempLayerID!=-1)
{
m_map.DrawLineEx(m_tempLayerID,m_pDesignLineStruct[m_designLinePointNum-1].dX, m_pDesignLineStruct[m_designLinePointNum-1].dY, dX, dY, 2, RGB(0,255,0));
DrawDistLabelEx(m_tempLayerID, m_pDesignLineStruct[m_designLinePointNum-1].dX, m_pDesignLineStruct[m_designLinePointNum-1].dY, dX, dY);
}
}
}
//<2F><><EFBFBD>ڿ<EFBFBD><DABF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ի<EFBFBD><D4BB><EFBFBD>ѡ<EFBFBD><D1A1>ģʽʱ<CABD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EAB4A6>ѡ<EFBFBD><D1A1>ģʽ
if (m_bSelectDropPoint && (m_map.GetCursorMode() == 3))
{
double _ptLon = 0.0, _ptLat = 0.0;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>γ<EFBFBD><CEB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_map.PixelToProj(x, y, &_ptLon, &_ptLat);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
if (m_pTargetDlg && m_pTargetDlg->GetSafeHwnd())
{
m_pTargetDlg->ShowPointPosition(_ptLon,_ptLat);
}
}
//<2F><><EFBFBD>ڿ<EFBFBD><DABF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ի<EFBFBD><D4BB><EFBFBD>ѡ<EFBFBD><D1A1>ģʽʱ<CABD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EAB4A6>ѡ<EFBFBD><D1A1>ģʽ
if (g_bSelectDropPoint && (m_map.GetCursorMode() == 3))
{
double _ptLon = 0.0, _ptLat = 0.0;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>γ<EFBFBD><CEB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_map.PixelToProj(x, y, &_ptLon, &_ptLat);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
if (m_dlgLightRegion.GetSafeHwnd())
{
m_dlgLightRegion.ShowPointPosition(_ptLon,_ptLat);
}
if (m_longSelectLineID > 0)
{
m_map.GetShapefile(m_longSelectLineID).EditClear();
}
m_gisManager->CreateEmptyLineShapfile(m_longSelectLineID,RGB(0,255,0),2);
m_gisManager->AddOnePoint2Shapfile(m_longSelectLineID,1,m_dlgLightRegion.m_dGroundLon,m_dlgLightRegion.m_dGroundLat);
m_gisManager->AddOnePoint2Shapfile(m_longSelectLineID,1,_ptLon,_ptLat);
double _distance = 0.0, _angle = 0.0;
CalculateTwoPtsDistanceAzimuth(_distance, _angle, m_dlgLightRegion.m_dGroundLon,m_dlgLightRegion.m_dGroundLat, _ptLon, _ptLat, 3);
CString str;
str.Format(_T("D:%.1fkm A:%.1f<EFBFBD><EFBFBD>"), _distance/1000, _angle);
if (m_longLabelPlotID != 0)
{
ClearPointShape(m_longLabelPlotID);
m_longLabelPlotID = 0;
}
//<2F><>ע<EFBFBD><D7A2><EFBFBD><EFBFBD>ͷ<EFBFBD>λ
AddPointShapeLayer(m_longLabelPlotID,_ptLon, _ptLat, str, _T("<EFBFBD><EFBFBD>ɫ"), RGB(255,0,0));
}
if (g_bDemAnalysising && g_iDemPointNum>=1)
{
double lon = 0, lat = 0;
m_map.PixelToProj(x, y, &lon, &lat);
double _dis = 0;
CalculateTwoPtsDistance(_dis, g_dDemPtLon[g_iDemPointNum-1], g_dDemPtLat[g_iDemPointNum-1], lon, lat, 3);
//<2F><><EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD>˫<EFBFBD><CBAB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>߶<EFBFBD>
if (_dis > 30)
{
m_map.RemoveLayer(g_lDemAltLayerID[g_iDemPointNum-1]);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>
CreateEmptyShapfile(g_lDemAltLayerID[g_iDemPointNum-1], 1, RGB(0,0,255));
//<2F><><EFBFBD><EFBFBD><EFBFBD>߶<EFBFBD>
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);
//<2F><>ʾ<EFBFBD>߶εľ<CEB5><C4BE><EFBFBD>ͷ<EFBFBD>λ
DrawLineLabel(g_lDemAltDisLayerID[g_iDemPointNum-1], g_dDemPtLon[g_iDemPointNum-1], g_dDemPtLat[g_iDemPointNum-1], lon, lat);
}
}
//ѡ<><D1A1><EFBFBD>ǵ<EFBFBD>ʱ
if (g_bSelectMarker)
{
TRACE("g_bSelectMarker = true\n");
double _ptLon = 0.0, _ptLat = 0.0;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>γ<EFBFBD><CEB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_map.PixelToProj(x, y, &_ptLon, &_ptLat);
m_dlgMarker.ShowMarkerCoordinate(_ptLon, _ptLat);
return;
}
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD>ڵ<EFBFBD>ʸ<EFBFBD><CAB8>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EBA3BA>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>drawLayerID
// <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EAA3AC><EFBFBD><EFBFBD>lon, γ<><CEB3>lat
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>strPtName
// <20><><EFBFBD><EFBFBD><EFBFBD>ɫstrColor
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB>ֵfontColor
void CGISDlg::AddTextToPointShapeLayer(long &drawLayerID, const double lon, const double lat, const CString strPtName, const CString strColor, unsigned long fontColor)
{
//<2F>жϵ<D0B6>ʸ<EFBFBD><CAB8>ͼ<EFBFBD><CDBC><EFBFBD>Ƿ<EFBFBD><C7B7>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE>
if (drawLayerID > 0)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ʸ<EFBFBD><CAB8>ͼ<EFBFBD><CDBC>
ClearPointShape(drawLayerID);
}
/////////////////////<2F>½<EFBFBD><C2BD><EFBFBD>ʸ<EFBFBD><CAB8>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF>///////////////////////////////////
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>
CreateEmptyShapfile(drawLayerID, 0, RGB(0,255,0));
/////////////////////<2F><>SHPͼ<50><CDBC><EFBFBD>м<EFBFBD><D0BC><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>Ϣ///////////////////////////////
//Label<65><6C><EFBFBD><EFBFBD>
CLabels labesPtr;
labesPtr = (m_map.GetShapefile(drawLayerID)).GetLabels();
CLabelCategory labelCategory = labesPtr.AddCategory(strColor);
labelCategory.SetFontColor(fontColor);
labelCategory.SetAlignment(1);
labelCategory.SetFontBold(TRUE);
labelCategory.SetFontName(_T("Times New Roman"));
labelCategory.SetFontSize(12);
//<2F><><EFBFBD><EFBFBD>Labels
labesPtr.AddLabel(strPtName, lon+0.0002, lat+0.0002, 0, 0);
//<2F><><EFBFBD>»<EFBFBD><C2BB><EFBFBD>
m_map.Redraw();
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߶εľ<CEB5><C4BE><EFBFBD>ͷ<EFBFBD>λ
void CGISDlg::DrawLineLabel(long &drawLayerID, const double ptLon1, const double ptLat1, const double ptLon2, const double ptLat2)
{
//û<>м<EFBFBD><D0BC>ص<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
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<EFBFBD><EFBFBD>"), _dis, _angle);
}
else
{
str.Format(_T("%.2fkm/%.1f<EFBFBD><EFBFBD>"), _dis*0.001,_angle);
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>ù<EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>ע
double textLon = 0;
double textLat = 0;
//<2F><><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
TargetPos2LabelPos(textLon, textLat, (ptLon1 + ptLon2)/2, (ptLat1 + ptLat2)/2);
//<2F>жϵ<D0B6>ʸ<EFBFBD><CAB8>ͼ<EFBFBD><CDBC><EFBFBD>Ƿ<EFBFBD><C7B7>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE>
if (drawLayerID > 0)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ʸ<EFBFBD><CAB8>ͼ<EFBFBD><CDBC>
ClearPointShape(drawLayerID);
drawLayerID = -1;
}
if (_T("") != str)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>
CreateEmptyShapfile(drawLayerID, 0, RGB(255,0,0)); //<2F><>ɫ
//Label<65><6C><EFBFBD><EFBFBD>
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);
}
//<2F>ػ<EFBFBD>
m_map.Redraw();
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߶εľ<CEB5><C4BE><EFBFBD>ͷ<EFBFBD>λ
void CGISDlg::DrawDistLabelEx(long drawLayerID, const double ptLon1, const double ptLat1, const double ptLon2, const double ptLat2,int pos)
{
double _dis, _angle;
CalculateTwoPtsDistanceAzimuth(_dis, _angle, ptLon1, ptLat1, ptLon2, ptLat2, 3);
CString str = _T("");
if ( _dis < 1000)
{
str.Format(_T("%dm;%.1f<EFBFBD><EFBFBD>"), int(_dis), _angle);
}
else
{
if(_dis<1000)
{
str.Format(_T("%.2fkm;%.1f<EFBFBD><EFBFBD>"), _dis*0.001, _angle);
}
else
{
str.Format(_T("%.2fkm;%.1f<EFBFBD><EFBFBD>"), _dis*0.001,_angle);
}
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>ù<EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>ע
double textLon = 0;
double textLat = 0;
//<2F><><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//TargetPos2LabelPos(textLon, textLat, (ptLon1 + ptLon2)/2, (ptLat1 + ptLat2)/2);
switch (pos)
{
case -1://<2F><>˵<EFBFBD>
TargetPos2LabelPos(textLon, textLat, ptLon1, ptLat1);
break;
case 0://<2F>м<EFBFBD>˵<EFBFBD>
TargetPos2LabelPos(textLon, textLat, (ptLon1 + ptLon2)/2, (ptLat1 + ptLat2)/2);
break;
case 1://<2F>Ҷ˵<D2B6>
TargetPos2LabelPos(textLon, textLat, ptLon2, ptLat2);
break;
}
CLabels drawLabels = m_map.GetDrawingLabels(drawLayerID);
//drawLabels.SetAvoidCollisions(false);
/*
CLabelCategory labelCategory = drawLabels.AddCategory(_T("dist"));
labelCategory.SetFontName(_T("<22><><EFBFBD><EFBFBD>"));
labelCategory.SetFontSize(12);
labelCategory.SetOffsetX(8);
labelCategory.SetFrameVisible(true);
labelCategory.SetFrameTransparency(180);
*/
drawLabels.SetFontName(_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"));
//drawLabels.SetFontName(_T("Arial"));
drawLabels.SetFontColor(RGB(220,220,220));
drawLabels.SetFontSize(12);
drawLabels.SetFontBold(true);
drawLabels.SetOffsetX(8);
drawLabels.SetFrameVisible(true);
drawLabels.SetFrameOutlineWidth(0);
drawLabels.SetFrameTransparency(150);
drawLabels.SetFrameBackColor(RGB(50,50,50));
drawLabels.SetFrameOutlineColor(RGB(50,50,50));
//labelCategory.SetLineOrientation(mapWindow::tkLineLabelOrientation::lorParallel);
//drawLabels.AddLabel(str,textLon,textLat,_angle-90,0);
drawLabels.AddLabel(str,textLon,textLat,0,0);
//<2F>ػ<EFBFBD>
m_map.Redraw();
}
//<2F><><EFBFBD><EFBFBD>:<3A><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>֮<EFBFBD><D6AE>ľ<EFBFBD><C4BE><EFBFBD>ͷ<EFBFBD>λ
void CGISDlg::DrawDistLabel(long drawLayerID,const double pts[][2], const int ptNum,int pos)
{
double _dis, _angle;
double dist_total = 0;
int i = 0;
for (i=0; i<ptNum-1; i++)
{
CalculateTwoPtsDistanceAzimuth(_dis, _angle, pts[i][0], pts[i][1], pts[i+1][0], pts[i+1][1], 3);
dist_total += _dis;
CString str = _T("");
if(i==0)
{
if ( dist_total < 1000)
{
str.Format(_T("%dm;%.1f<EFBFBD><EFBFBD>"), int(dist_total), _angle);
}
else
{
if(_dis<1000)
{
str.Format(_T("%.2fkm;%.1f<EFBFBD><EFBFBD>"), dist_total*0.001, _angle);
}
else
{
str.Format(_T("%.2fkm;%.1f<EFBFBD><EFBFBD>"), dist_total*0.001,_angle);
}
}
}
else
{
if ( dist_total < 1000)
{
str.Format(_T("%dm(+%dm);%.1f<EFBFBD><EFBFBD>"), int(dist_total), int(_dis), _angle);
}
else
{
if(_dis<1000)
{
str.Format(_T("%.2fkm(+%dm);%.1f<EFBFBD><EFBFBD>"), dist_total*0.001, int(_dis), _angle);
}
else
{
str.Format(_T("%.2fkm(+%.2fkm);%.1f<EFBFBD><EFBFBD>"), dist_total*0.001,_dis*0.001,_angle);
}
}
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>ù<EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>ע
double textLon = 0;
double textLat = 0;
//<2F><><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
switch (pos)
{
case -1: //<2F><>˵<EFBFBD>
TargetPos2LabelPos(textLon, textLat, pts[i][0], pts[i][1]);
break;
case 0: //<2F>м<EFBFBD>
TargetPos2LabelPos(textLon, textLat, (pts[i][0] + pts[i+1][0])/2, (pts[i][1] + pts[i+1][1])/2);
break;
case 1: //<2F>Ҷ˵<D2B6>
TargetPos2LabelPos(textLon, textLat, pts[i+1][0], pts[i+1][1]);
break;
}
CLabels drawLabels = m_map.GetDrawingLabels(drawLayerID);
CLabelCategory labelCategory = drawLabels.AddCategory(_T("totaldist"));
labelCategory.SetFontName(_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"));
labelCategory.SetFontColor(RGB(220,220,220));
labelCategory.SetFontBold(true);
labelCategory.SetFontSize(10);
labelCategory.SetOffsetX(10);
labelCategory.SetFrameTransparency(150);
labelCategory.SetFrameVisible(true);
labelCategory.SetFrameBackColor(RGB(50,50,50));
labelCategory.SetFrameOutlineColor(RGB(50,50,50));
if (pos==0)
{
drawLabels.AddLabel(str,textLon,textLat,_angle-90,0);
}
else
{
drawLabels.AddLabel(str,textLon,textLat,0,0);
}
//<2F>ػ<EFBFBD>
m_map.Redraw();
//m_map.DrawLabelEx(drawLayerID,str,textLon,textLat,_angle);
}
}
//<2F><><EFBFBD><EFBFBD>:<3A><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>֮<EFBFBD><D6AE>ľ<EFBFBD><C4BE><EFBFBD>ͷ<EFBFBD>λ
void CGISDlg::DrawDistLebel(long drawLayerID,const PtStruct *pts, const int ptNum)
{
double _dis, _angle;
double dist_total = 0;
int i = 0;
for (i=0; i<ptNum-1; i++)
{
CalculateTwoPtsDistanceAzimuth(_dis, _angle, pts[i].dX, pts[i].dY, pts[i+1].dX, pts[i+1].dY, 3);
dist_total += _dis;
CString str = _T("");
if(i==0)
{
if ( dist_total < 1000)
{
str.Format(_T("%dm;%.1f<EFBFBD><EFBFBD>"), int(dist_total), _angle);
}
else
{
if(_dis<1000)
{
str.Format(_T("%.2fkm;%.1f<EFBFBD><EFBFBD>"), dist_total*0.001, _angle);
}
else
{
str.Format(_T("%.2fkm;%.1f<EFBFBD><EFBFBD>"), dist_total*0.001,_angle);
}
}
}
else
{
if ( dist_total < 1000)
{
str.Format(_T("%dm(+%dm);%.1f<EFBFBD><EFBFBD>"), int(dist_total), int(_dis), _angle);
}
else
{
if(_dis<1000)
{
str.Format(_T("%.2fkm(+%.dm);%.1f<EFBFBD><EFBFBD>"), dist_total*0.001, int(_dis), _angle);
}
else
{
str.Format(_T("%.2fkm(+%.2fkm);%.1f<EFBFBD><EFBFBD>"), dist_total*0.001,_dis*0.001,_angle);
}
}
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>ù<EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>ע
double textLon = 0;
double textLat = 0;
//<2F><><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
TargetPos2LabelPos(textLon, textLat, (pts[i].dX + pts[i+1].dX)/2, (pts[i].dY + pts[i+1].dY)/2);
CLabels drawLabels = m_map.GetDrawingLabels(drawLayerID);
CLabelCategory labelCategory = drawLabels.AddCategory(_T("totaldist"));
labelCategory.SetFontName(_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"));
labelCategory.SetFontColor(RGB(220,220,220));
labelCategory.SetFontBold(true);
labelCategory.SetFontSize(12);
labelCategory.SetOffsetX(10);
labelCategory.SetFrameTransparency(150);
labelCategory.SetFrameVisible(true);
labelCategory.SetFrameBackColor(RGB(50,50,50));
labelCategory.SetFrameOutlineColor(RGB(50,50,50));
drawLabels.AddLabel(str,textLon,textLat,_angle-90,0);
//<2F>ػ<EFBFBD>
m_map.Redraw();
//m_map.DrawLabelEx(drawLayerID,str,textLon,textLat,_angle);
}
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void CGISDlg::ClearPloylineMeasure()
{
m_map.RemoveLayer(m_polylineMeasureLineLayerID);
m_map.RemoveLayer(m_polylineMeasurePtLayerID[0]);
m_map.RemoveLayer(m_polylineMeasurePtLayerID[1]);
m_map.ClearDrawing(m_polylineMeasureLabelLayerID);
m_map.ClearDrawing(m_tempLayerID);
m_polylineMeasureLineLayerID = -1;
m_polylineMeasureLabelLayerID = -1;
m_polylineMeasurePtLayerID[0] = -1;
m_polylineMeasurePtLayerID[1] = -1;
m_map.Redraw();
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3>ر<EFBFBD><D8B1><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD>ȡ<EFBFBD>γ<EFBFBD>ȵ<EFBFBD><C8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
LRESULT CGISDlg::OnCloseLonLatDialog(WPARAM wParam, LPARAM lParam)
{
OnShowLonLatInfo();
return 0;
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3>ر<EFBFBD><D8B1><EFBFBD>ʾ2<CABE><32>֮<EFBFBD><D6AE>ľ<EFBFBD>γ<EFBFBD><CEB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
LRESULT CGISDlg::OnCloseShowDistanceDialog(WPARAM wParam, LPARAM lParam)
{
OnSurvey();
return 0;
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD>к<EFBFBD><D0BA><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD><C6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݶԻ<DDB6><D4BB><EFBFBD>
void CGISDlg::OnFlyLineDesign()
{
//return;
//<2F>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD>ص<EFBFBD>ͼ
if (m_bHaveAddMap)
{
//<2F>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD>ں<EFBFBD><DABA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬ʱ<CCAC><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (m_bLineDesign)
{
return;
}
else
{
m_bLineDesign = true;
//<2F><>Ƶ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_bDesignFirstPoint = true;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>еĺ<D0B5><C4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_pFlyLineDesign->ClearCurrentData();
//<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶԻ<C6B6><D4BB><EFBFBD>
//m_pFlyLineDesign->ShowWindow(SW_SHOW);
//<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
//m_pLineSectDlg->ShowWindow(SW_SHOW);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>ʽ
m_map.SetCursorMode(3);
}
else
{
AfxMessageBox(_T("<EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><EFBFBD>ص<EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>"));
}
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD>GIS<49><53><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
void CGISDlg::SetGISWindowArea(const CRect gisArea)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪGIS<49>Ի<EFBFBD><D4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB>Ļ<EFBFBD>е<EFBFBD>GIS<49><53>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
m_rcGISArea = gisArea;
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD>ʾGIS<49>Ի<EFBFBD><D4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void ShowDlg(const CRect rc, CWnd* pParent)
{
//pParent->Create(IDD_DIALOG1,pParent);
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><CBBB><EFBFBD>18<31><38><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void CGISDlg::CalculateUAVPolygonCoordinate(const double dX, const double dY, const double yaw)
{
double pixelX = 0;
double pixelY = 0;
m_map.ProjToPixel(dX, dY, &pixelX, &pixelY);
// <20><><EFBFBD>ɻ<EFBFBD>
//<2F><><EFBFBD>ôź<C3B4><C5BA><EFBFBD><EFBFBD>
double sinang = sin(yaw * DEG2RAD);
double cosang = cos(yaw * DEG2RAD);
//<2F><>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
double rotatePixelX = 0;
double rotatePixelY = 0;
//<2F><><EFBFBD><EFBFBD><E3BEAD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>ƽ<EFBFBD>ƺ<EFBFBD><C6BA><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><CBBB><EFBFBD><EFBFBD><EFBFBD>
for(int k=0; k<m_ptNum; k++) //<2F><>18<31><38><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
rotatePixelX = pixelX + (m_ptPlane[k].x * cosang - m_ptPlane[k].y * sinang); //X<><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
rotatePixelY = pixelY + (m_ptPlane[k].x * sinang + m_ptPlane[k].y * cosang); //Y<><59><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>γ<EFBFBD><CEB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_map.PixelToProj(rotatePixelX, rotatePixelY, &m_ppUavPtArray[k][0], &m_ppUavPtArray[k][1]);
}
}
void CGISDlg::CalculateUAVPolygonCoordinate_ADS(const double dX, const double dY, const double yaw)
{
double pixelX = 0;
double pixelY = 0;
m_map.ProjToPixel(dX, dY, &pixelX, &pixelY);
// <20><><EFBFBD>ɻ<EFBFBD>
//<2F><><EFBFBD>ôź<C3B4><C5BA><EFBFBD><EFBFBD>
double sinang = sin(yaw * DEG2RAD);
double cosang = cos(yaw * DEG2RAD);
//<2F><>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
double rotatePixelX = 0;
double rotatePixelY = 0;
//<2F><><EFBFBD><EFBFBD><E3BEAD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>ƽ<EFBFBD>ƺ<EFBFBD><C6BA><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><CBBB><EFBFBD><EFBFBD><EFBFBD>
for(int k=0; k<m_ptNum; k++) //<2F><>18<31><38><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
rotatePixelX = pixelX + (m_ptPlane_ADS[k].x * cosang - m_ptPlane_ADS[k].y * sinang); //X<><58><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
rotatePixelY = pixelY + (m_ptPlane_ADS[k].x * sinang + m_ptPlane_ADS[k].y * cosang); //Y<><59><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>γ<EFBFBD><CEB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_map.PixelToProj(rotatePixelX, rotatePixelY, &m_ppUavPtArray_ADS[k][0], &m_ppUavPtArray_ADS[k][1]);
}
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶԻ<C6B6><D4BB><EFBFBD><EFBFBD>˳<EFBFBD><CBB3><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD>
LRESULT CGISDlg::OnCloseLineDesignDialog(WPARAM wParam, LPARAM lParam)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD>ʶΪFALSE
m_bLineDesign = false;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EBBABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>صı<D8B5>ע<EFBFBD><D7A2><EFBFBD><EFBFBD>
RemoveDesignLineData();
//<2F><><EFBFBD>غ<EFBFBD><D8BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵĶԻ<C4B6><D4BB><EFBFBD>
m_pLineSectDlg->ShowWindow(SW_HIDE);
return 0;
}
//<2F><><EFBFBD>ܣ<EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺͺ<DDBA><CDBA>߱<EFBFBD><DFB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void CGISDlg::RemoveDesignLineData()
{
//<2F><>Ƶĺ<C6B5><C4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (m_designLinePointNum > 0)
{
m_designLinePointNum = 0;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD>Ϣ
ClearDrawingInLineDesign();
//m_map.RedrawWindow(m_designLineLayerID2);
}
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void CGISDlg::ClearDrawingInLineDesign()
{
/////////////<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/////////////
//ɾ<><C9BE><EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1>
m_map.ClearDrawing(m_tempLayerID);
m_map.ClearDrawing(m_designLineLayerID);
if (m_designLineLayerID2 != -1)
{
m_map.RemoveLayer(m_designLineLayerID2);
}
m_map.ClearLabels(m_designLineLayerID);
}
// <20><><EFBFBD><EFBFBD><EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD>¼<EFBFBD>
void CGISDlg::MouseWheel(short zDelta)
{
m_bSetPointModel=FALSE;
//m_bHaveShowLineDesign = TRUE;
//m_bLDSetPoint = FALSE;
//m_bLineDesign=FALSE;
m_bPtDel=FALSE;
m_bPtEdit=FALSE;
if (m_bHaveAddMap)
{
//<2F><><EFBFBD>ַŴ<D6B7><C5B4><EFBFBD>С
m_map.ZoomIn(0.0005 * zDelta);
}
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>ڵ<EFBFBD>ͼ<EFBFBD><CDBC>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD>룺Ŀ<EBA3BA><C4BF><EFBFBD><EFBFBD>nPt<50><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD>dX<64><58>γ<EFBFBD><CEB3>dY
void CGISDlg::AddTargetPoint(const int nPt, const double dX, const double dY)
{
//û<>м<EFBFBD><D0BC>ص<EFBFBD>ͼ
if (!m_bHaveAddMap)
{
return;
}
CString str;
str.Format(_T("Target%d"), nPt);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
CString strColor = _T("<EFBFBD><EFBFBD>ɫ");
//<2F><><EFBFBD>ڵ<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>б<EFBFBD>ע
AddPointShapeLayer(m_targetDrawLayerID, dX, dY, str, strColor, RGB(0,255,0));
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD>ʸ<EFBFBD><CAB8>ͼ<EFBFBD><CDBC><EFBFBD>ж<EFBFBD>̬<EFBFBD><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD>
//<2F><><EFBFBD><EFBFBD><EBA3BA><EFBFBD><EFBFBD>dX<64><58>γ<EFBFBD><CEB3>dY,<2C><><EFBFBD><EFBFBD><EFBFBD>yaw
//˵<><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ר<EFBFBD><D7A8><EFBFBD><EFBFBD><EFBFBD>ڻ<EFBFBD><DABB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><CBBB><EFBFBD>ʸ<EFBFBD><CAB8><EFBFBD><EFBFBD>ͼ<EFBFBD>㣬ÿ<E3A3AC><C3BF><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD>ϴα<CFB4><CEB1><EFBFBD>Shp<68><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>±<EFBFBD><C2B1>
void CGISDlg::DrawUAV(int uavid, const double dX, const double dY, const double yaw,bool control)
{
if (uavid<0||uavid>2)
{
return;
}
//2017.03 by ZCW
/*
//<2F><>һ<EFBFBD>α<EFBFBD><EFBFBD><E6BABD><EFBFBD><EFBFBD><EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>
if (!m_bFirstDrawUAVTrack)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><CBBB><EFBFBD>߱<EFBFBD><DFB1>ͼ<EFBFBD><CDBC>
CreateEmptyShapfile(m_flyTrackLayerID, 1, RGB(255,0,0));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><CBBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>
CreateEmptyShapfile(m_UAVFlyTrackLayerID, 2, RGB(255,0,0));
m_bFirstDrawUAVTrack = true;
}
else
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><CBBB>Ĺ켣
m_map.RemoveLayer(m_UAVFlyTrackLayerID);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><CBBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>
CreateEmptyShapfile(m_UAVFlyTrackLayerID, 2, RGB(255,0,0));
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><CBBB><EFBFBD><ECBCA3>
AddOnePoint2Shapfile(m_flyTrackLayerID, 1, dX, dY);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><CBBB><EFBFBD>ͼ<EFBFBD><CDBC>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD><EFBFBD>
CalculateUAVPolygonCoordinate(dX, dY, yaw);
// AddUAVPoints2Polygon(m_UAVFlyTrackLayerID);
//<2F><><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD>˻<EFBFBD>shp
for (int i=0; i<m_ptNum; i++)
{
AddOnePoint2Shapfile(m_UAVFlyTrackLayerID, 2, m_ppUavPtArray[i][0], m_ppUavPtArray[i][1]);
}
*/
COLORREF color = RGB(255,255,0);
if (control)
{
color = RGB(255,0,0);
}
//<2F><>һ<EFBFBD>α<EFBFBD><EFBFBD><E6BABD><EFBFBD><EFBFBD><EFBFBD>½<EFBFBD><C2BD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>
if (!m_bFirstDrawUAVTrack[uavid])
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><CBBB><EFBFBD>߱<EFBFBD><DFB1>ͼ<EFBFBD><CDBC>
CreateEmptyShapfile(m_flyTrackLayerID[uavid], 1,color);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><CBBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>
CreateEmptyShapfile(m_UAVFlyTrackLayerID[uavid], 2, color);
m_bFirstDrawUAVTrack[uavid] = true;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><CBBB><EFBFBD><ECBCA3>
AddOnePoint2Shapfile(m_flyTrackLayerID[uavid], 1, dX, dY);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><CBBB><EFBFBD>ͼ<EFBFBD><CDBC>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD><EFBFBD>
CalculateUAVPolygonCoordinate(dX, dY, yaw);
int i = 0;
//ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>shpͼ<70><CDBC>
for (i=0; i<m_ptNum; i++)
{
(m_map.GetShapefile(m_UAVFlyTrackLayerID[uavid])).EditDeleteShape(i);
}
//(m_map.GetShapefile(m_UAVFlyTrackLayerID2)).EditClear();
//<2F><><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD>˻<EFBFBD>shp
for (i=0; i<m_ptNum; i++)
{
AddOnePoint2Shapfile(m_UAVFlyTrackLayerID[uavid], 2, m_ppUavPtArray[i][0], m_ppUavPtArray[i][1]);
}
}
void CGISDlg::DrawUAV_ADS(const int uavNum, const int uavid, const double lon, const double lat, const double yaw, const bool control, const CString strPlaneName)
{
m_bWithin100km_ADS[uavid] = control; //<2F>Ƿ<EFBFBD><C7B7><EFBFBD>100km<6B><6D>
m_dLon_ADS[uavid] = lon;
m_dLat_ADS[uavid] = lat;
m_dYaw_ADS[uavid] = yaw;
m_strPlaneName_ADS[uavid] = strPlaneName;
m_iTotalADSnum = uavNum;
}
//<2F><><EFBFBD><EFBFBD><>³<EFBFBD><C2B3><EFBFBD><EFBFBD>ĺ<EFBFBD><C4BA><EFBFBD>
//˵<><CBB5><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD>עλ<D7A2><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>λ<EFBFBD>ô<EFBFBD><C3B4><EFBFBD>Y<EFBFBD><59><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD><EEA3AC><EFBFBD><EFBFBD><EFBFBD>Ŵ<EFBFBD><C5B4><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>Ŀ<EFBFBD><C4BF><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ǻ<EFBFBD>
void CGISDlg::OnRefreshInfo()
{
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD>ӡ<EFBFBD><D3A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD>bmp<6D>ļ<EFBFBD><C4BC><EFBFBD>
void CGISDlg::OnPrint()
{
CRect rc;
GetClientRect(&rc);
//m_map.MoveWindow(0,0,rc.Width(),rc.Height(),1);
CRect rcGISCopyArea = m_gisAreaInScreen;
rcGISCopyArea.top += m_toolbarHeight;
CScreenCapture capture;
capture.ScreenGISArea(rcGISCopyArea);
}
void CGISDlg::OnShowCtrlMenu()
{
/*if (!m_bLineDesign)
{
return;
}
if (m_bLineDesign) */ //<2F><><EFBFBD>߱༭ʱ<E0BCAD><CAB1>ֹͣ<CDA3>
{
if (m_map.GetCursorMode() != mapWindow::tkCursorMode::cmNone)
{
m_map.SetCursorMode(mapWindow::tkCursorMode::cmNone);
}
//TRACE(_T("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n"));
////<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա༭
//int iSel=GetPtSel(m_LBtnDownX,m_LBtnDownY);
//if (iSel!=-1)
//{
// double dPointX, dPointY;
// //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// m_map.PixelToProj(m_LBtnDownX, m_LBtnDownY, &dPointX, &dPointY);
// //<2F><><EFBFBD>õ<EFBFBD>ľ<EFBFBD><C4BE>ȡ<EFBFBD>γ<EFBFBD><CEB3>
// m_DlgLinePointAttri.SetPtCoordinate(dPointX, dPointY, iSel, m_designLinePointNum, m_pDesignLineStruct);
//}
if (g_b981APad)
{
CMenu tmenu;
tmenu.LoadMenu(IDR_FLOATINGMENU);
POINT pt;
GetCursorPos( &pt );
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݲ˵<DDB2>
tmenu.GetSubMenu( 0 )->TrackPopupMenu( TPM_LEFTALIGN | TPM_LEFTBUTTON, pt.x, pt.y, this );
}
return;
}
}
void CGISDlg::OnMenuLinePtCtrlShow()
{
//<2F><><EFBFBD><EFBFBD>Ҽ<EFBFBD><D2BC><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݲ˵<DDB2>
if (g_b981APad)
{
OnShowRMenu();
}
else
{
OnMapSelect();
}
}
void CGISDlg::OnZhangCW()
{
int i = 0;
}
BOOL CGISDlg::OnToolTipsNotify(UINT id,NMHDR* pNMHDR,LRESULT* pResult)
{
TOOLTIPTEXT* pT = (TOOLTIPTEXT*)pNMHDR;
UINT nID = pNMHDR->idFrom;
switch (nID)
{
case IDT_BUTTON1:
pT->lpszText = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ";
break;
case IDT_BUTTON2:
pT->lpszText = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>դ<EFBFBD><EFBFBD><EFBFBD>ͼ";
break;
case IDT_BUTTON3:
pT->lpszText = "<EFBFBD><EFBFBD><EFBFBD>Ӻ<EFBFBD><EFBFBD><EFBFBD>";
break;
case IDT_BUTTON4:
pT->lpszText = "ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
break;
case IDT_BUTTON5:
pT->lpszText = "ɾ<EFBFBD><EFBFBD>ȫ<EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD>";
break;
case IDT_BUTTON6:
pT->lpszText = "<EFBFBD><EFBFBD>ͼѡ<EFBFBD><EFBFBD>";
break;
case IDT_BUTTON7:
pT->lpszText = "<EFBFBD>Ŵ<EFBFBD>";
break;
case IDT_BUTTON8:
pT->lpszText = "<EFBFBD><EFBFBD>С";
break;
case IDT_BUTTON9:
pT->lpszText = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
break;
case IDT_BUTTON10:
pT->lpszText = "ȫͼ";
break;
case IDT_BUTTON11:
pT->lpszText = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
break;
case IDT_BUTTON12:
pT->lpszText = "<EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD>λ";
break;
case IDT_BUTTON13:
pT->lpszText = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
break;
case IDT_BUTTON14:
pT->lpszText = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
break;
default:
pT->lpszText ="";
}
return true;
}
//<2F><><EFBFBD>ܣ<EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID<49>ŵ<EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>
void CGISDlg::DeleteTarget(const int nPt)
{
//<2F>жϸ<D0B6><CFB8><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>Ϸ<EFBFBD>
//if (nPt >= MAX_TARGET_NUM)
//{
// return;
//}
//int i = nPt-1;
////ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>ע<EFBFBD><D7A2>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD>Ϣ
//if (m_pTargetShapfileID[i] != 0)
//{
// //<2F>жϵ<D0B6>ʸ<EFBFBD><CAB8>ͼ<EFBFBD><CDBC><EFBFBD>Ƿ<EFBFBD><C7B7>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE>
// ClearPointShape(m_pTargetShapfileID[i]);
// m_pTargetShapfileID[i] = 0;
//}
}
//<2F><><EFBFBD>ܣ<EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>
void CGISDlg::DeleteAllTargets()
{
//ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>ע<EFBFBD><D7A2>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD>Ϣ
//for (int i=0; i<MAX_TARGET_NUM; i++)
//{
// if (m_pTargetShapfileID[i] != 0)
// {
// //<2F>жϵ<D0B6>ʸ<EFBFBD><CAB8>ͼ<EFBFBD><CDBC><EFBFBD>Ƿ<EFBFBD><C7B7>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE>
// ClearPointShape(m_pTargetShapfileID[i]);
// m_pTargetShapfileID[i] = 0;
// }
//}
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>ü<EFBFBD><C3BC><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>ű<EFBFBD>עλ<D7A2><CEBB>
//<2F><><EFBFBD>룺Ŀ<EBA3BA><C4BF><EFBFBD>λ<EFBFBD>þ<EFBFBD><C3BE>ȡ<EFBFBD>targetLon<6F><6E>γ<EFBFBD>ȡ<EFBFBD>targetLat
//<2F><><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD>עλ<D7A2>þ<EFBFBD><C3BE>ȡ<EFBFBD>labelLon<6F><6E>γ<EFBFBD>ȡ<EFBFBD>labelLat
void CGISDlg::TargetPos2LabelPos(double &labelLon, double &labelLat, const double targetLon, const double targetLat)
{
double textPixelX = 0;
double textPixelY = 0;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_map.ProjToPixel(targetLon, targetLat, &textPixelX, &textPixelY);
//y<><79><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD>ֵ
textPixelY -= m_labelWarpValue;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_map.PixelToProj(textPixelX, textPixelY, &labelLon, &labelLat);
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3>ڵ<EFBFBD>ͼ<EFBFBD><CDBC>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>
//<2F><><EFBFBD>룺Ŀ<EBA3BA><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>targetInfo
// <20><><EFBFBD>ͼ<EFBFBD><CDBC>ID<49><44>drawLayerID
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>ID<49><44>drawLayerID
void CGISDlg::DrawTarget(long &drawLayerID, const PtStruct targetInfo)
{
//û<>м<EFBFBD><D0BC>ص<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (!m_bHaveAddMap)
{
return;
}
//<2F><>һ<EFBFBD>α<EFBFBD><CEB1>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µı<C2B5><C4B1>ͼ<EFBFBD><CDBC>
if (drawLayerID == -1)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>
drawLayerID = m_map.NewDrawing(1);
}
CString str = _T("");
// <09><>ʾ<EFBFBD><CABE><EFBFBD>߱<EFBFBD><DFB1>
// if (targetInfo.lineID <= 0) //<2F><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// {
//
str.Format(_T("%d"), targetInfo.nPt);
// }
// else //<2F><>ʾ<EFBFBD><CABE><EFBFBD>ߺͺ<DFBA><CDBA><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3>ԡ<EFBFBD>X-XX<58><58><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
// {
// str.Format(_T("%d-%d"), targetInfo.lineID,targetInfo.nPt);
// }
//<2F><><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>
m_map.DrawPoint(targetInfo.dX, targetInfo.dY, 10, RGB(0,0,255));
/* mapwinGIS 4.9.3<EFBFBD>б<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
m_map.LabelColor(drawLayerID, RGB(0,255,0));
//<2F><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֺ<EFBFBD>
m_map.LayerFont(drawLayerID, _T("<22><><EFBFBD><EFBFBD>"), 20);
*/
/* mapwinGIS 4.9.3<EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD> */
CLabels labels = m_map.GetDrawingLabels(drawLayerID);
labels.SetFrameVisible(false);
labels.SetFontColor(RGB(0,255,0));
labels.SetFontName(_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"));
labels.SetFontSize(20);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>ù<EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>ע
double textLon = 0;
double textLat = 0;
//<2F><><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
TargetPos2LabelPos(textLon, textLat, targetInfo.dX, targetInfo.dY);
//<2F><>עĿ<D7A2><C4BF><EFBFBD><EFBFBD>ǩ<EFBFBD><C7A9><EFBFBD><EFBFBD>
TRACE(str);
TRACE("\n");
//m_map.AddLabel(drawLayerID, str, RGB(255,255,0), textLon, textLat, 1);
m_map.DrawLabelEx(drawLayerID, str,textLon, textLat,0);
//<2F>ػ<EFBFBD>str
m_map.Redraw();
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD>Ӻ<EFBFBD><D3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɺ󣬵<C9BA>ͼ<EFBFBD><CDBC>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>к<EFBFBD><D0BA><EFBFBD><EFBFBD>ע
LRESULT CGISDlg::OnAddLinePoint(WPARAM wParam, LPARAM lParam)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>ı<EFBFBD>ע<EFBFBD><D7A2>Ϣ
ClearDrawingInLineDesign();
m_tempLayerID = -1;
//<2F><><EFBFBD><EFBFBD><EBBABD><EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD><DDBC><EFBFBD><EFBFBD><EFBFBD>
m_pDesignLineStruct[m_designLinePointNum] = m_curDesignPoint;
//<2F><><EFBFBD><EFBFBD><EFBFBD>ż<EFBFBD><C5BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1
//m_designLinePointNum++;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶĺ<C6B5><C4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DrawDesignLineData();
//<2F><><EFBFBD><EFBFBD>ƶ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1>
m_beTemLayerDrawing = true;
//<2F>Ƿ<EFBFBD><C7B7>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µĺ<C2B5><C4BA><EFBFBD>
m_bAddNewPoint = true;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ε<EFBFBD><CEB5><EFBFBD><EFBFBD>
m_pLineSectDlg->SetLineSectStatus();
return 0;
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶĺ<C6B5><C4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E3BCB0><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void CGISDlg::DrawDesignLineData()
{
//<2F>½<EFBFBD><C2BD><EFBFBD><EFBFBD><EFBFBD>
if (m_designLineLayerID2!=-1)
{
m_map.RemoveLayer(m_designLineLayerID2);
m_designLineLayerID2 = -1;
}
m_map.ClearDrawing(m_designLineLayerID);
m_designLineLayerID = m_map.NewDrawing(1);
long index = m_map.GetLayerPosition(m_designLineLayerID);
BOOL b= m_map.MoveLayerUp(index);
int i = 0;
//<2F><><EFBFBD>ƺ<EFBFBD><C6BA><EFBFBD><E3BCB0><EFBFBD>ע
for (i=0; i<m_designLinePointNum; i++)
{
DrawTarget(m_designLineLayerID, m_pDesignLineStruct[i]);
}
if (m_designLinePointNum>1)
{
CreateEmptyShapfile(m_designLineLayerID2,1,RGB(0,255,0));
AddPoints2Shapfile(m_designLineLayerID2,1,m_pDesignLineStruct,m_designLinePointNum);
DrawDistLebel(m_designLineLayerID,m_pDesignLineStruct,m_designLinePointNum);
}
//<2F><><EFBFBD>ƺ<EFBFBD><C6BA><EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/*for (i=0; i<m_designLinePointNum-1; i++)
{
m_map.DrawLineEx(m_designLineLayerID,m_pDesignLineStruct[i].dX, m_pDesignLineStruct[i].dY,
m_pDesignLineStruct[i+1].dX, m_pDesignLineStruct[i+1].dY, 2, RGB(0,255,0));
}*/
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><E0BCAD><EFBFBD><EFBFBD><E3A3AC><EFBFBD><EFBFBD>󣬵<EFBFBD>ͼ<EFBFBD><CDBC>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>к<EFBFBD><D0BA><EFBFBD><EFBFBD>ע
LRESULT CGISDlg::OnEditLinePoint(WPARAM wParam, LPARAM lParam)
{
//<2F><><EFBFBD>º<EFBFBD><C2BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
PtStruct ptEdit;
memcpy(&ptEdit, (PtStruct *)wParam, sizeof(PtStruct));
if (lParam == 0) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݱ༭
{
//<2F><><EFBFBD><EFBFBD>ƶ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1>
m_beTemLayerDrawing = true;
}
else if (lParam == 1) //<2F><><EFBFBD><EFBFBD>༭ģʽ
{
//<2F><><EFBFBD><EFBFBD>ƶ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1>
m_beTemLayerDrawing = false;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD><DDB8><EFBFBD>
m_pDesignLineStruct[ptEdit.nPt-1] = ptEdit;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>ı<EFBFBD>ע<EFBFBD><D7A2>Ϣ
ClearDrawingInLineDesign();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶĺ<C6B5><C4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DrawDesignLineData();
//<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>ĺ<EFBFBD><C4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
memcpy(&m_curEditLinePoint, &ptEdit, sizeof(PtStruct));
return 0;
}
//<2F><><EFBFBD>ܣ<EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E3A3AC><EFBFBD><EFBFBD>󣬵<EFBFBD>ͼ<EFBFBD><CDBC>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>к<EFBFBD><D0BA><EFBFBD><EFBFBD>ע
LRESULT CGISDlg::OnDeleteLinePoint(WPARAM wParam, LPARAM lParam)
{
//ɾ<><C9BE><EFBFBD><EFBFBD>ĵ<EFBFBD><C4B5>
int deletePtID = (int)wParam;
if ((deletePtID > (m_designLinePointNum-1)) || (deletePtID<0))
{
return 0;
}
//<2F><><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD>ĵ<EFBFBD>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD>º<EFBFBD><C2BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD><DDBC><EFBFBD>
for (int i=deletePtID; i<m_designLinePointNum-1; i++)
{
m_pDesignLineStruct[i] = m_pDesignLineStruct[i+1];
m_pDesignLineStruct[i].nPt --;
}
//<2F>ܵĺ<DCB5><C4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȥ1
m_designLinePointNum --;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>ı<EFBFBD>ע<EFBFBD><D7A2>Ϣ
ClearDrawingInLineDesign();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶĺ<C6B5><C4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DrawDesignLineData();
//<2F><><EFBFBD><EFBFBD>ƶ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1>
m_beTemLayerDrawing = true;
return 0;
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD><EFBFBD>󣬵<EFBFBD>ͼ<EFBFBD><CDBC>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>к<EFBFBD><D0BA><EFBFBD><EFBFBD>ע
LRESULT CGISDlg::OnSaveLinePoints(WPARAM wParam, LPARAM lParam)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʊ<EFBFBD>ʶΪFALSE
m_bLineDesign = false;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EBBABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>صı<D8B5>ע<EFBFBD><D7A2><EFBFBD><EFBFBD>
RemoveDesignLineData();
//<2F><><EFBFBD>غ<EFBFBD><D8BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵĶԻ<C4B6><D4BB><EFBFBD>
m_pLineSectDlg->ShowWindow(SW_HIDE);
return 0;
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD>shpfileͼ<65><CDBC>
//<2F><><EFBFBD>룺ʸ<EBA3BA><CAB8>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>shpType<70><65><30><CEAA><EFBFBD><EFBFBD>ͼ<EFBFBD>㣻1Ϊ<31><CEAA>ͼ<EFBFBD>㣻2Ϊ<32><CEAA>ͼ<EFBFBD>
//<2F><><EFBFBD><EFBFBD><EBA3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫdrawColor
//<2F><><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><CAB8>ͼ<EFBFBD><CDBC>ID<49><44>shpLayerID<49><44>
void CGISDlg::CreateEmptyShapfile(long &shpLayerID, const int shpType, const unsigned long drawColor)
{
long fieldIndex = 0;
//Ŀ<><C4BF><EFBFBD><EFBFBD>SHPͼ<50><CDBC>
mapWindow::IShapefilePtr targetPtShape;
targetPtShape.CreateInstance("MapWinGIS.Shapefile");
//<2F><><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD>ͼ<EFBFBD><CDBC>
if (shpType == 0) //<2F><>ͼ<EFBFBD><CDBC>
{
targetPtShape->CreateNewWithShapeID(_T(""), mapWindow::SHP_POINT);
}
else if (shpType == 1) //<2F><>ͼ<EFBFBD><CDBC>
{
targetPtShape->CreateNewWithShapeID(_T(""), mapWindow::SHP_POLYLINE);
}
else if (shpType == 2) //<2F><>ͼ<EFBFBD><CDBC>
{
targetPtShape->CreateNewWithShapeID(_T(""), mapWindow::SHP_POLYGON);
}
else
{
shpLayerID = -1;
return;
}
//<2F><><EFBFBD><EFBFBD>field<6C><64><EFBFBD><EFBFBD>1
mapWindow::IFieldPtr fieldPtr1;
fieldPtr1.CreateInstance("MapWinGIS.Field");
fieldPtr1->Key = (_bstr_t)("X");
fieldPtr1->Type = mapWindow::DOUBLE_FIELD;
targetPtShape->EditInsertField(fieldPtr1, &fieldIndex, NULL);
//<2F><><EFBFBD><EFBFBD>field<6C><64><EFBFBD><EFBFBD>2
mapWindow::IFieldPtr fieldPtr2;
fieldPtr2.CreateInstance("MapWinGIS.Field");
fieldPtr2->Key = (_bstr_t)("Y");
fieldPtr2->Type = mapWindow::DOUBLE_FIELD;
targetPtShape->EditInsertField(fieldPtr2, &fieldIndex, NULL);
//Ŀ<><C4BF><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>
shpLayerID = m_map.AddLayer(targetPtShape, true);
mapWindow::IShapeDrawingOptionsPtr pShapeDrawingOption;
pShapeDrawingOption.CreateInstance("MapWinGIS.ShapeDrawingOptions");
if (shpType == 0) //<2F><>ͼ<EFBFBD><CDBC>
{
pShapeDrawingOption->FillColor = drawColor;
pShapeDrawingOption->PointSize = 20;
//pShapeDrawingOption->SetDefaultPointSymbol(mapWindow::tkDefaultPointSymbol::dpsDiamond);
//pShapeDrawingOption->PutFillColor(drawColor);
//pShapeDrawingOption->PutPointSize(18);
pShapeDrawingOption->PutPointType(mapWindow::tkPointSymbolType::ptSymbolStandard);
pShapeDrawingOption->PutPointShape(mapWindow::tkPointShapeType::ptShapeStar);
//m_map.SetShapeLayerPointType(shpLayerID, mapWindow::ptDiamond);
//m_map.SetShapeLayerStippleColor(shpLayerID, drawColor);
}
else if (shpType == 1) //<2F><>ͼ<EFBFBD><CDBC>
{
pShapeDrawingOption->LineColor = drawColor;
pShapeDrawingOption->LineWidth = 2;
}
else if (shpType == 2) //<2F><>ͼ<EFBFBD><CDBC>
{
pShapeDrawingOption->FillColor = drawColor;
}
(m_map.GetShapefile(shpLayerID)).SetDefaultDrawingOptions(pShapeDrawingOption);
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD>shpfile<6C><65>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӻ<EFBFBD><D3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD>룺ʸ<EBA3BA><CAB8>ͼ<EFBFBD><CDBC>ID<49><44>shpLayerID
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD><DDBC><EFBFBD>pts<74><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ptNum
void CGISDlg::AddPoints2PointShapfile(const long shpLayerID, const PtStruct *pts, const int ptNum)
{
for (long i=0; i<ptNum; i++)
{
mapWindow::IPointPtr pintPtr;
pintPtr.CreateInstance("MapWinGIS.Point");
mapWindow::IShapePtr shapePtr;
shapePtr.CreateInstance("MapWinGIS.Shape");
shapePtr->Create(mapWindow::SHP_POINT);
//<2F><><EFBFBD><EFBFBD>
pintPtr->x = pts[i].dX;
//γ<><CEB3>
pintPtr->y = pts[i].dY;
shapePtr->InsertPoint(pintPtr, &i);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><CAB8>
(m_map.GetShapefile(shpLayerID)).EditInsertShape(shapePtr, &i);
}
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD>shpfile<6C><65>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӻ<EFBFBD><D3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD>룺ʸ<EBA3BA><CAB8>ͼ<EFBFBD><CDBC>ID<49><44>shpLayerID
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD><DDBC><EFBFBD>pts<74><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ptNum
void CGISDlg::AddPoints2LineShapfile(const long shpLayerID, const PtStruct *pts, const int ptNum)
{
mapWindow::IShapePtr shapePtr;
shapePtr.CreateInstance("MapWinGIS.Shape");
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><CAB8>shapfile
shapePtr->Create(mapWindow::SHP_POLYLINE);
long i = 0;
for (i=0; i<ptNum; i++)
{
mapWindow::IPointPtr pintPtr;
pintPtr.CreateInstance("MapWinGIS.Point");
//<2F><><EFBFBD><EFBFBD>
pintPtr->x = pts[i].dX;
//γ<><CEB3>
pintPtr->y = pts[i].dY;
shapePtr->InsertPoint(pintPtr, &i);
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>ʸ<EFBFBD><CAB8>
(m_map.GetShapefile(shpLayerID)).EditInsertShape(shapePtr, &i);
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD>shpfileͼ<65><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӻ<EFBFBD><D3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD>룺ʸ<EBA3BA><CAB8>ͼ<EFBFBD><CDBC>ID<49><44>shpLayerID<49><44>ʸ<EFBFBD><CAB8>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>shpType<70><65><30><CEAA><EFBFBD><EFBFBD>ͼ<EFBFBD>㣻1Ϊ<31><CEAA>ͼ<EFBFBD>㣻2Ϊ<32><CEAA>ͼ<EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD><DDBC><EFBFBD>pts<74><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ptNum
void CGISDlg::AddPoints2Shapfile(const long shpLayerID, const int shpType, const PtStruct *pts, const int ptNum)
{
long i = 0;
//<2F><><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD>м<EFBFBD><D0BC><EFBFBD><EBBABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (shpType == 0) //<2F><>ͼ<EFBFBD><CDBC>
{
for (i=0; i<ptNum; i++)
{
mapWindow::IPointPtr pintPtr;
pintPtr.CreateInstance("MapWinGIS.Point");
mapWindow::IShapePtr shapePtr;
shapePtr.CreateInstance("MapWinGIS.Shape");
shapePtr->Create(mapWindow::SHP_POINT);
//<2F><><EFBFBD><EFBFBD>
pintPtr->x = pts[i].dX;
//γ<><CEB3>
pintPtr->y = pts[i].dY;
shapePtr->InsertPoint(pintPtr, &i);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><CAB8>
(m_map.GetShapefile(shpLayerID)).EditInsertShape(shapePtr, &i);
}
}
else if ((shpType == 1) || (shpType == 2)) //<2F><>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>
{
mapWindow::IShapePtr shapePtr;
shapePtr.CreateInstance("MapWinGIS.Shape");
//<2F><><EFBFBD><EFBFBD>shp
if (shpType == 1) //<2F><>ʸ<EFBFBD><CAB8>
{
shapePtr->Create(mapWindow::SHP_POLYLINE);
}
else //<2F><>ʸ<EFBFBD><CAB8>
{
shapePtr->Create(mapWindow::SHP_POLYGON);
}
for (i=0; i<ptNum; i++)
{
mapWindow::IPointPtr pintPtr;
pintPtr.CreateInstance("MapWinGIS.Point");
//<2F><><EFBFBD><EFBFBD>
pintPtr->x = pts[i].dX;
//γ<><CEB3>
pintPtr->y = pts[i].dY;
shapePtr->InsertPoint(pintPtr, &i);
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><CAB8>
(m_map.GetShapefile(shpLayerID)).EditInsertShape(shapePtr, &i);
}
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD>shpfile<6C><65>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><E6B7BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>UAV
void CGISDlg::AddUAVPoints2Polygon(const long shpLayerID)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>
mapWindow::IShapePtr shapePtr;
shapePtr.CreateInstance("MapWinGIS.Shape");
shapePtr->Create(mapWindow::SHP_POLYGON);
long shpNum = 0;
for (int i=0; i<18; i++)
{
mapWindow::IPointPtr pintPtr;
pintPtr.CreateInstance("MapWinGIS.Point");
//<2F><><EFBFBD><EFBFBD>
pintPtr->x = m_ppUavPtArray[i][0];
//γ<><CEB3>
pintPtr->y = m_ppUavPtArray[i][1];
//<2F><>ǰshp<68>в<EFBFBD><D0B2><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
shapePtr->InsertPoint(pintPtr, &shpNum);
}
shpNum = 0;
(m_map.GetShapefile(shpLayerID)).EditClear();
//<2F><>shpfile<6C>ļ<EFBFBD><C4BC>в<EFBFBD><D0B2><EFBFBD>shp<68>ļ<EFBFBD>
(m_map.GetShapefile(shpLayerID)).EditInsertShape(shapePtr, &shpNum);
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD>shpfileͼ<65><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD>룺ʸ<EBA3BA><CAB8>ͼ<EFBFBD><CDBC>ID<49><44>shpLayerID<49><44>shp<68><70><EFBFBD><EFBFBD>shpType
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD>ȡ<EFBFBD>dX; γ<>ȡ<EFBFBD>dY
void CGISDlg::AddOnePoint2Shapfile(const long shpLayerID, const int shpType, const double dX, const double dY)
{
mapWindow::IPointPtr pintPtr;
pintPtr.CreateInstance("MapWinGIS.Point");
//<2F><><EFBFBD><EFBFBD>
pintPtr->x = dX;
//γ<><CEB3>
pintPtr->y = dY;
//shpfile<6C>ļ<EFBFBD><C4BC>е<EFBFBD>shpͼ<70><CDBC><EFBFBD><EFBFBD><EFBFBD>
long shpNum = (m_map.GetShapefile(shpLayerID)).GetNumShapes();
//<2F>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD>ڸ<EFBFBD>shpͼ<70><EFBFBD><E3A3AC><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>shpͼ<70><CDBC>
if (shpNum == 0)
{
mapWindow::IShapePtr shapePtr;
shapePtr.CreateInstance("MapWinGIS.Shape");
if (shpType == 0) //<2F><>ͼ<EFBFBD><CDBC>
{
shapePtr->Create(mapWindow::SHP_POINT);
}
else if (shpType == 1) //<2F><>ͼ<EFBFBD><CDBC>
{
shapePtr->Create(mapWindow::SHP_POLYLINE);
}
else if (shpType == 2) //<2F><>ͼ<EFBFBD><CDBC>
{
shapePtr->Create(mapWindow::SHP_POLYGON);
}
//<2F><>ǰshp<68>в<EFBFBD><D0B2><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
shapePtr->InsertPoint(pintPtr, &shpNum);
//<2F><>shpfile<6C>ļ<EFBFBD><C4BC>в<EFBFBD><D0B2><EFBFBD>shp<68>ļ<EFBFBD>
(m_map.GetShapefile(shpLayerID)).EditInsertShape(shapePtr, &shpNum);
}
else
{
//<2F><>õ<EFBFBD>ǰ<EFBFBD><C7B0>shp
CShape shape = (m_map.GetShapefile(shpLayerID)).GetShape(shpNum-1);
//<2F><>ǰ<EFBFBD>ĺ<EFBFBD><C4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
long curLinePts = shape.GetNumPoints();
//<2F><>ǰshp<68>в<EFBFBD><D0B2><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
shape.InsertPoint(pintPtr, &curLinePts);
}
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3>ڵ<EFBFBD>ͼ<EFBFBD><CDBC>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><D7B0><EFBFBD>ķ<EFBFBD><C4B7>к<EFBFBD><D0BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EBA3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E5BCAF>linePtArray<61><79><EFBFBD><EFBFBD><EFBFBD>ߵĺ<DFB5><C4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ptNum
//˵<><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>ʾ<EFBFBD><CABE><EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD>˸ú<CBB8><C3BA>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6A3AC><EFBFBD>±<EFBFBD><EFBFBD><E6BABD>
void CGISDlg::DrawBindingLine(const PtStruct *linePtArray, const int ptNum)
{
if (ptNum == 0 )
{
return;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD><DDBC><EFBFBD>
DrawLineDataStruct lineDataArr;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD>ĺ<EFBFBD><C4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD><DDBC><EFBFBD>
m_lineManage.LinePoint2DrawLinePoints(lineDataArr, linePtArray, ptNum);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĺ<EFBFBD><C4BA><EFBFBD>
ClearDrawedLine(lineDataArr.lineID-1);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD><EFBFBD>߼<EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD>
m_pFlyLines[lineDataArr.lineID-1] = lineDataArr;
//<2F><>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//DrawFlyLine(m_pFlyLines[lineDataArr.lineID-1]);
DrawFlyLine(lineDataArr);
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>к<EFBFBD><D0BA><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EBA3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>lineData
void CGISDlg::DrawFlyLine(const DrawLineDataStruct lineData)
{
//field<6C><64><EFBFBD><EFBFBD>ֵ
long fieldIndex = 0;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int lineID = lineData.lineID-1;
//û<><C3BB>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD>SHPͼ<50><EFBFBD><E3A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>
if (!m_pHaveDrawLineFlag[lineID])
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>
CreateEmptyShapfile(m_ppPlanLineShpLayerIDArr[lineID][0], 0, /*RGB(0,255,0)*/LineClr[lineID]);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>
CreateEmptyShapfile(m_ppPlanLineShpLayerIDArr[lineID][1], 1, /*RGB(0,255,0)*/LineClr[lineID]);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>ɹ<EFBFBD>
m_pHaveDrawLineFlag[lineID] = true;
}
//<2F><><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EBBABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
AddPoints2PointShapfile(m_ppPlanLineShpLayerIDArr[lineID][0], lineData.pts, lineData.pointNum);
//<2F><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EBBABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
AddPoints2LineShapfile(m_ppPlanLineShpLayerIDArr[lineID][1], lineData.linePts, lineData.linePointNum);
/////////////////////<2F><>SHPͼ<50><CDBC><EFBFBD>м<EFBFBD><D0BC><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>Ϣ///////////////////////////////
//Label<65><6C><EFBFBD><EFBFBD>
CLabels labesPtr;
labesPtr = (m_map.GetShapefile(m_ppPlanLineShpLayerIDArr[lineID][0])).GetLabels();
//CLabelCategory labelCategory = labesPtr.AddCategory(_T("<22><>ɫ"));
//labelCategory.SetFontColor(/*RGB(255,0,0)*/LineClr[lineID]);
//labelCategory.SetAlignment(1);
//labelCategory.SetFontBold(TRUE);
//labelCategory.SetFontName(LPCTSTR("<22><><EFBFBD><EFBFBD>"));
//labelCategory.SetFontSize(12);
//labesPtr.SetAvoidCollisions(FALSE);
labesPtr.SetFontColor(/*RGB(255,0,0)*/LineClr[lineID]);
labesPtr.SetAlignment(1);
labesPtr.SetFontBold(true);
labesPtr.SetFontName(LPCTSTR("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"));
labesPtr.SetFontSize(16);
labesPtr.put_FontSize2(16);
labesPtr.SetFrameVisible(false);
labesPtr.SetAvoidCollisions(FALSE);
CString strText = _T("");
//<2F><><EFBFBD><E6BABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for (long i=0; i<lineData.pointNum; i++)
{
//<2F><>ע<EFBFBD><D7A2>Ϣ
if ( 14 ==lineData.lineID)
{
strText.Format(_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>½<EFBFBD><EFBFBD>") /*lineData.lineID, */ /*lineData.pts[i].nPt*/);
}
else
{
strText.Format(_T("%d-%d"), lineData.lineID, lineData.pts[i].nPt);
}
//<2F><><EFBFBD><EFBFBD>Labels
labesPtr.AddLabel((LPCTSTR)strText, lineData.pts[i].dX, lineData.pts[i].dY, 0, 0);
}
/////////////////////<2F><>SHPͼ<50><CDBC><EFBFBD>м<EFBFBD><D0BC><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>Ϣ///////////////////////////////
//<2F><><EFBFBD>»<EFBFBD><C2BB><EFBFBD>
m_map.Redraw();
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD>ݵ<EFBFBD>ͼ<EFBFBD>ؼ<EFBFBD><D8BC><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD>ͼ<EFBFBD>ؼ<EFBFBD>
//˵<><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD>ֱ<EFBFBD><D6B1>ʺ<EFBFBD><CABA><EFBFBD>Ʒֱ<C6B7><D6B1><EFBFBD>֮<EFBFBD><D6AE>ļ<EFBFBD><C4BC>ι<EFBFBD>ϵ
//<2F><><EFBFBD><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>moveToArea
void CGISDlg::MoveGISShowWindow(const CRect moveToArea)
{
CRect gisRect;
//X<><58><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD>
double cx = 1.0*moveToArea.Width()/m_rcDesignGISWindow.Width();
//Y<><59><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD>
double cy = 1.0*moveToArea.Height()/m_rcDesignGISWindow.Height();
gisRect.left = static_cast<int>(m_rcDesignGISWindow.left*cx);
gisRect.top = static_cast<int>(m_rcDesignGISWindow.top*cy);
gisRect.right = moveToArea.right;
gisRect.bottom = moveToArea.bottom;
//<2F><>ͼ<EFBFBD><CDBC>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>߶ȵ<DFB6><C8B5><EFBFBD>
m_onePerWidth = 1.0/gisRect.Width();
m_onePerHeight = 1.0/gisRect.Height();
//<2F><>ͼ<EFBFBD><CDBC>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>߶<EFBFBD>
m_mapAreaHalfWidth = 0.5*gisRect.Width();
m_mapAreaHalfHeight = 0.5*gisRect.Height();
//<2F><>ͼ<EFBFBD>ؼ<EFBFBD><D8BC>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
GetDlgItem(IDC_MAP1)->MoveWindow(gisRect, TRUE);
}
void CGISDlg::OnMouseMove(UINT nFlags, CPoint point)
{
CBCGPDialog::OnMouseMove(nFlags, point);
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void CGISDlg::CreateFloatToolBar()
{
CBitmap bm;
UINT Resource[14]={IDB_BITMAP_ADD_SHPFILE, IDB_BITMAP_ADD_IMGFILE, IDB_BITMAP_ADD_FLYLINE,
IDB_BITMAP_LAYER_MANAGE, IDB_BITMAP_DELETE_LAYER,
IDB_BITMAP_SELECT, IDB_BITMAP_ZOOMIN, IDB_BITMAP_ZOOMOUT,
IDB_BITMAP_MOVE, IDB_BITMAP_FULLSCREEN, IDB_BITMAP_RULER,
IDB_BITMAP_XY, IDB_BITMAP_SURVEY,
IDB_BITMAP10/*IDB_BITMAP_PRINT*/}; //λͼID<49><44><EFBFBD><EFBFBD>
m_ImageList.Create(24, 24, ILC_COLOR24|ILC_MASK, 0, 0); //<2F><><EFBFBD><EFBFBD>Image List
CRect rcToolBar;
/*rcToolBar.top = m_rcGISArea.top;
rcToolBar.left = m_rcGISArea.right-24;
rcToolBar.bottom = m_rcGISArea.bottom;
rcToolBar.right = m_rcGISArea.right;*/
//m_ToolBar.Create(TBSTYLE_FLAT | CCS_TOP | WS_VISIBLE | /*WS_BORDER |*/ CCS_ADJUSTABLE | TBSTYLE_TOOLTIPS, rcToolBar, this, IDR_TOOLBAR1); //<2F><><EFBFBD><EFBFBD>Toolbar Control
m_ToolBar.Create(TBSTYLE_FLAT | CCS_TOP | WS_VISIBLE | /*WS_BORDER |*/ TBSTYLE_TOOLTIPS, rcToolBar, this, IDR_TOOLBAR1); //<2F><><EFBFBD><EFBFBD>Toolbar Control
m_ToolBar.SetBitmapSize(CSize(24, 24));
int buttonItems = 14;
int i;
for(i=0; i<buttonItems; i++)
{
bm.LoadBitmap(Resource[i]);
m_ImageList.Add(&bm, (CBitmap *)NULL);
bm.Detach();
}
m_ToolBar.SetImageList(&m_ImageList);
TBBUTTON Buttons[14]; //<2F><><EFBFBD><EFBFBD>TBBUTTON<4F><EFBFBD><E1B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CString str;
for(i=0; i<buttonItems; i++)
{
str.LoadString(IDT_BUTTON1+i); //IDS_FILE<4C><45><EFBFBD><EFBFBD>String Table<6C><65><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD>String
// Buttons[i].iString = m_ToolBar.AddStrings(str);
Buttons[i].iString = NULL;
Buttons[i].dwData=0;
Buttons[i].fsState=TBSTATE_ENABLED;
Buttons[i].fsStyle=TBSTYLE_BUTTON;
Buttons[i].iBitmap=i;
Buttons[i].idCommand = IDT_BUTTON1+i; //<2F><>ť<EFBFBD><C5A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ
}
m_ToolBar.EnableToolTips(true);//<2F><><EFBFBD>ӹ<EFBFBD><D3B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD>ť<EFBFBD><C5A5>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
m_ToolBar.AddButtons(buttonItems, Buttons);
m_ToolBar.AutoSize();
//m_ToolBar.ShowWindow(SW_HIDE);
RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST, 0);
}
BOOL CGISDlg::OnToolTipText(UINT,NMHDR* pNMHDR,LRESULT* pResult)
{
ASSERT(pNMHDR->code == TTN_NEEDTEXTA || pNMHDR->code == TTN_NEEDTEXTW); // UNICODE<44><45>Ϣ
TOOLTIPTEXTA* pTTTA = (TOOLTIPTEXTA*)pNMHDR; TOOLTIPTEXTW* pTTTW = (TOOLTIPTEXTW*)pNMHDR; //TCHAR szFullText[512];
CString strTipText;
UINT nID = pNMHDR->idFrom;
if(pNMHDR->code == TTN_NEEDTEXTA && (pTTTA->uFlags & TTF_IDISHWND) || pNMHDR->code == TTN_NEEDTEXTW && (pTTTW->uFlags & TTF_IDISHWND))
{// idFromΪ<6D><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>HWND
nID = ::GetDlgCtrlID((HWND)nID);
}
if(nID != 0) //<2F><>Ϊ<EFBFBD>ָ<EFBFBD><D6B8><EFBFBD>
{ //AfxLoadString(nID, szFullText); //strTipText=szFullText;
strTipText.LoadString(nID);
strTipText = strTipText.Mid(strTipText.Find('\n',0)+1);
#ifndef _UNICODE
if(pNMHDR->code == TTN_NEEDTEXTA)
{
lstrcpyn(pTTTA->szText,strTipText,sizeof(pTTTA->szText));
}
else
{
_mbstowcsz(pTTTW->szText, strTipText, sizeof(pTTTW->szText));
}
#else
if(pNMHDR->code == TTN_NEEDTEXTA)
{
_wcstombsz(pTTTA->szText,strTipText,sizeof(pTTTA->szText));
}
else
{
lstrcpyn(pTTTW->szText,strTipText,sizeof(pTTTW->szText));
}
#endif
*pResult = 0; //ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
::SetWindowPos(pNMHDR->hwndFrom,HWND_TOP,0,0,0,0, SWP_NOACTIVATE|SWP_NOSIZE|SWP_NOMOVE|SWP_NOOWNERZORDER);
return TRUE;
}
return TRUE;
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD>õ<EFBFBD><C3B5><EFBFBD>վλ<D5BE><CEBB>
//<2F><><EFBFBD><EFBFBD><EBA3BA><EFBFBD><EFBFBD>dX<64><58>γ<EFBFBD><CEB3>dY<64><59><EFBFBD>߶<EFBFBD>alt
void CGISDlg::SetGCSPosition(const double dX, const double dY, const double alt)
{
//<2F><><EFBFBD><EFBFBD>վλ<D5BE><CEBB>
g_gcsLon = dX; //<2F><><EFBFBD><EFBFBD>
g_gcsLat = dY; //γ<><CEB3>
g_gcsAlt = alt; //<2F>߶<EFBFBD>
CString str = _T("GCS");
CString strColor = _T("<EFBFBD><EFBFBD>ɫ");
//<2F><><EFBFBD>ڵ<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>б<EFBFBD>ע
AddPointShapeLayer(m_gcsPtShpLayerID, dX, dY, str, strColor, RGB(255,0,0));
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽһ<CABD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void CGISDlg::OnGuideMode1()
{
//<2F>жϵ<D0B6>ͼ<EFBFBD>Ƿ<EFBFBD><C7B7>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD>أ<EFBFBD>û<EFBFBD>м<EFBFBD><D0BC>ط<EFBFBD><D8B7><EFBFBD>
if ( !m_bHaveAddMap ) //û<>м<EFBFBD><D0BC>ص<EFBFBD>ͼ?
{
AfxMessageBox( _T( "<EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><EFBFBD>ص<EFBFBD>ͼ<EFBFBD><EFBFBD>" ) );
return;
}
m_guidePtInfo.guideMode = 1;
m_guidePointMode = 1;
m_bGuideMode = true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽΪ<CABD><CEAA>
//2023.4.3 JackLiu
/*
DrawGuidePoint(1, m_guidePtInfo.guidePtLon, m_guidePtInfo.guidePtLat);
m_struMapOut.cmd=MapCmd_Guide1;
m_struMapOut.lon = m_guidePtInfo.guidePtLon;
m_struMapOut.lat = m_guidePtInfo.guidePtLat;
::SendMessage(GetParent()->GetSafeHwnd(),MESSAGE_B8MAP, (int)(&m_struMapOut),0);*/
//::PostMessage(HWND_BROADCAST, WM_SEND_GUIDEPOINT_INFO , WPARAM(&m_guidePtInfo) , 1);
//::PostMessage(m_MsgHwnd, m_MsgID, WPARAM(&m_guidePtInfo) , 1);
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void CGISDlg::OnGuideMode2()
{
//<2F>жϵ<D0B6>ͼ<EFBFBD>Ƿ<EFBFBD><C7B7>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD>أ<EFBFBD>û<EFBFBD>м<EFBFBD><D0BC>ط<EFBFBD><D8B7><EFBFBD>
if ( !m_bHaveAddMap ) //û<>м<EFBFBD><D0BC>ص<EFBFBD>ͼ?
{
AfxMessageBox( _T( "<EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><EFBFBD>ص<EFBFBD>ͼ<EFBFBD><EFBFBD>" ) );
return;
}
m_guidePtInfo.guideMode = 2;
m_guidePointMode = 2;
m_bGuideMode = true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽΪ<CABD><CEAA>
//2023.4.3 JackLiu
/*DrawGuidePoint(2,m_guidePtInfo.guidePtLon, m_guidePtInfo.guidePtLat);
m_struMapOut.cmd=MapCmd_Guide2;
m_struMapOut.lon = m_guidePtInfo.guidePtLon;
m_struMapOut.lat = m_guidePtInfo.guidePtLat;
::SendMessage(GetParent()->GetSafeHwnd(),MESSAGE_B8MAP, (int)(&m_struMapOut),0);*/
//::PostMessage(m_MsgHwnd, m_MsgID, WPARAM(&m_guidePtInfo) , 2);
//::PostMessage(HWND_BROADCAST, WM_SEND_GUIDEPOINT_INFO , WPARAM(&m_guidePtInfo) , 2);
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD>ʾ1<CABE>ź<EFBFBD><C5BA><EFBFBD>
void CGISDlg::OnShowLine1()
{
SetFlyLineShowStatus(1);
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD>ʾ2<CABE>ź<EFBFBD><C5BA><EFBFBD>
void CGISDlg::OnShowLine2()
{
SetFlyLineShowStatus(2);
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD>ʾ3<CABE>ź<EFBFBD><C5BA><EFBFBD>
void CGISDlg::OnShowLine3()
{
SetFlyLineShowStatus(3);
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD>ʾ4<CABE>ź<EFBFBD><C5BA><EFBFBD>
void CGISDlg::OnShowLine4()
{
SetFlyLineShowStatus(4);
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD>ʾ5<CABE>ź<EFBFBD><C5BA><EFBFBD>
void CGISDlg::OnShowLine5()
{
SetFlyLineShowStatus(5);
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD>ʾ6<CABE>ź<EFBFBD><C5BA><EFBFBD>
void CGISDlg::OnShowLine6()
{
SetFlyLineShowStatus(6);
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD>ʾ7<CABE>ź<EFBFBD><C5BA><EFBFBD>
void CGISDlg::OnShowLine7()
{
SetFlyLineShowStatus(7);
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD>ʾ8<CABE>ź<EFBFBD><C5BA><EFBFBD>
void CGISDlg::OnShowLine8()
{
SetFlyLineShowStatus(8);
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD>ʾ9<CABE>ź<EFBFBD><C5BA><EFBFBD>
void CGISDlg::OnShowLine9()
{
SetFlyLineShowStatus(9);
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD>ʾ10<31>ź<EFBFBD><C5BA><EFBFBD>
void CGISDlg::OnShowLine10()
{
SetFlyLineShowStatus(10);
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD>ĺ<EFBFBD><C4BA><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EBA3BA><EFBFBD>߱<EFBFBD><DFB1>lineID<49><44><EFBFBD><EFBFBD>0<EFBFBD><30>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>
void CGISDlg::ClearDrawedLine(const int lineID)
{
if (m_pHaveDrawLineFlag[lineID])
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ʸ<EFBFBD><CAB8>ͼ<EFBFBD><CDBC>
ClearPointShape(m_ppPlanLineShpLayerIDArr[lineID][0]);
//<2F><><EFBFBD><EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD>ĺ<EFBFBD><C4BA><EFBFBD>
m_map.RemoveLayer(m_ppPlanLineShpLayerIDArr[lineID][1]);
m_pHaveDrawLineFlag[lineID] = false;
}
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݲ˵<DDB2><CBB5><EFBFBD><EBBABD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>صIJ<D8B5><C4B2><EFBFBD>
// 1)<29><><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD>ע<EFBFBD><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
// 2)<29><><EFBFBD><EFBFBD>δ<EFBFBD><CEB4>ע<EFBFBD><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
//<2F><><EFBFBD><EFBFBD><EBA3BA><EFBFBD>߱<EFBFBD><DFB1>lineID
void CGISDlg::SetFlyLineShowStatus(const int lineID)
{
int lineIndex = lineID - 1;
//<2F>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><E6A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (m_pHaveDrawLineFlag[lineIndex])
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĺ<EFBFBD><C4BA><EFBFBD>
ClearDrawedLine(lineIndex);
//ˢ<><CBA2>
m_map.Redraw();
//<2F><>ʶ<EFBFBD><CAB6>false
m_pHaveDrawLineFlag[lineIndex] = false;
}
else
{
TCHAR filter[500]=_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>(*.txt)\0*.txt\0<EFBFBD><EFBFBD>");
CFileDialog LineRouteDlg(TRUE, NULL, NULL, OFN_HIDEREADONLY, filter, NULL);
/*LineRouteDlg.m_ofn.lpstrInitialDir = strRouteFileDir;*/
LineRouteDlg.m_ofn.lpstrFilter="txt(*.txt)\0*.txt";
LineRouteDlg.m_ofn.lpstrTitle = "ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɵĺ<EFBFBD><EFBFBD><EFBFBD>";
if (LineRouteDlg.DoModal() == IDOK) //<2F>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>OK<4F><4B>ť<EFBFBD><C5A5>ֹ<EFBFBD>Ի<EFBFBD><D4BB><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD>ֵ
{
CString str = LineRouteDlg.GetPathName(); //<2F><>ȡ<EFBFBD>ļ<EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD>
OnShowGivenLine(str/*GetFlyLineName(lineID)*/);
}
}
}
void CGISDlg::OnUpdateLineDisplay1( CCmdUI *pCmdUI )
{
pCmdUI->SetCheck(m_pHaveDrawLineFlag[0]); //<2F><>1<EFBFBD>ź<EFBFBD><C5BA><EFBFBD>ѡ<EFBFBD>к󣬴<D0BA><F3A3ACB4>ϼǺ<CFBC>
}
void CGISDlg::OnUpdateLineDisplay2( CCmdUI *pCmdUI )
{
pCmdUI->SetCheck(m_pHaveDrawLineFlag[1]);
}
void CGISDlg::OnUpdateLineDisplay3( CCmdUI *pCmdUI )
{
pCmdUI->SetCheck(m_pHaveDrawLineFlag[2]);
}
void CGISDlg::OnUpdateLineDisplay4( CCmdUI *pCmdUI )
{
pCmdUI->SetCheck(m_pHaveDrawLineFlag[3]);
}
void CGISDlg::OnUpdateLineDisplay5( CCmdUI *pCmdUI )
{
pCmdUI->SetCheck(m_pHaveDrawLineFlag[4]);
}
void CGISDlg::OnUpdateShowLine6(CCmdUI *pCmdUI)
{
pCmdUI->SetCheck(m_pHaveDrawLineFlag[5]);
}
void CGISDlg::OnUpdateShowLine7(CCmdUI *pCmdUI)
{
pCmdUI->SetCheck(m_pHaveDrawLineFlag[6]);
}
void CGISDlg::OnUpdateShowLine8(CCmdUI *pCmdUI)
{
pCmdUI->SetCheck(m_pHaveDrawLineFlag[7]);
}
void CGISDlg::OnUpdateShowLine9(CCmdUI *pCmdUI)
{
pCmdUI->SetCheck(m_pHaveDrawLineFlag[8]);
}
void CGISDlg::OnUpdateShowLine10(CCmdUI *pCmdUI)
{
pCmdUI->SetCheck(m_pHaveDrawLineFlag[9]);
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EBA3BA><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>strLineFileName
void CGISDlg::OnShowGivenLine(const CString strLineFileName)
{
//<2F>жϵ<D0B6>ͼ<EFBFBD>Ƿ<EFBFBD><C7B7>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD>أ<EFBFBD>û<EFBFBD>м<EFBFBD><D0BC>ط<EFBFBD><D8B7><EFBFBD>
if ( !m_bHaveAddMap ) //û<>м<EFBFBD><D0BC>ص<EFBFBD>ͼ?
{
BCGPMessageBox( _T( "<EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><EFBFBD>ص<EFBFBD>ͼ<EFBFBD><EFBFBD>" ) );
return;
}
if (_T("") == strLineFileName)
{
return;
}
//<2F>ж<EFBFBD><D0B6>ļ<EFBFBD><C4BC>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>
if (!SearchDirectory(strLineFileName))
{
BCGPMessageBox( _T( "<EFBFBD><EFBFBD>·<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڣ<EFBFBD>" ) );
return;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD><DDBC><EFBFBD>
DrawLineDataStruct lineDataGroup;
//<2F><>ʼ<EFBFBD><CABC>
memset(&lineDataGroup, 0, sizeof(DrawLineDataStruct));
//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>ȡ<EFBFBD>ɹ<EFBFBD>
if (m_lineManage.ReadLineDataFromFile(lineDataGroup, strLineFileName))
{
//<2F>жϺ<D0B6><CFBA>ߺ<EFBFBD><DFBA>Ƿ<EFBFBD><C7B7><EFBFBD>ȷ<EFBFBD><C8B7>lineIDȡֵ1-8,10-11,13<31><33><EFBFBD><EFBFBD>add by jackwong 2018.08.01<EFBFBD><EFBFBD>
if(lineDataGroup.lineID<1 || /*(*/lineDataGroup.lineID>14 /*&& lineDataGroup.lineID<10)*/ /*|| lineDataGroup.lineID==14 *//*|| lineDataGroup.lineID>13*/)
{
BCGPMessageBox("<EFBFBD><EFBFBD><EFBFBD>ߺŲ<EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><EFBFBD>");
return;
}
/*******************by Wu 2023.09.14****************************/
m_ShowedLineDataList[lineDataGroup.lineID] = lineDataGroup;
if (lineDataGroup.lineID==11) //<2F><><EFBFBD>պ<EFBFBD><D5BA><EFBFBD> <20><EFBFBD><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڱ༭
{
//<2F><>ʼ<EFBFBD><CABC>
//memset(&backLineDataGroup, 0, sizeof(DrawLineDataStruct));
backLineDataGroup = lineDataGroup;
//Σ<>յ<EFBFBD><D5B5>ε<EFBFBD><CEB5><EFBFBD>
ClearDangerousTerrainPoints();
double height = backLineDataGroup.linePts[0].nH;
double pts[128][2];
for (int i=0;i<backLineDataGroup.linePointNum;i++)
{
pts[i][0] = backLineDataGroup.linePts[i].dX;
pts[i][1] = backLineDataGroup.linePts[i].dY;
}
DrawDangerousTerrainPoints(pts,backLineDataGroup.linePointNum,height);
}
/**********************************************************************************/
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĺ<EFBFBD><C4BA><EFBFBD>
ClearDrawedLine(lineDataGroup.lineID-1);
//<2F><><EFBFBD><E6BABD>
DrawFlyLine(lineDataGroup);
}
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><E6B5BC><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
//<2F><><EFBFBD><EFBFBD><EBA3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>guideMode<64><65><31><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1,2Ϊ<32><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>dX<64><58>γ<EFBFBD><CEB3>dY
void CGISDlg::DrawGuidePoint(const BYTE guideMode, const double dX, const double dY)
{
CString str = _T("");
if (guideMode == 1) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1
{
str = _T("GuidePoint1");
}
else if (guideMode == 2) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2
{
str = _T("GuidePoint2");
}
CString strColor = _T("<EFBFBD><EFBFBD>ɫ");
//<2F><><EFBFBD>ڵ<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>б<EFBFBD>ע
AddPointShapeLayer(m_guidePtShpLayerID, dX, dY, str, strColor, RGB(255,0,0));
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD>ڵ<EFBFBD>ʸ<EFBFBD><CAB8>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EBA3BA>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>drawLayerID
// <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EAA3AC><EFBFBD><EFBFBD>dX, γ<><CEB3>dY
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>strPtName
// <20><><EFBFBD><EFBFBD><EFBFBD>ɫstrColor
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB>ֵfontColor
void CGISDlg::AddPointShapeLayer(long &drawLayerID, const double dX, const double dY, const CString strPtName, const CString strColor, unsigned long fontColor)
{
//<2F>жϵ<D0B6>ʸ<EFBFBD><CAB8>ͼ<EFBFBD><CDBC><EFBFBD>Ƿ<EFBFBD><C7B7>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE>
if (drawLayerID != -1)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ʸ<EFBFBD><CAB8>ͼ<EFBFBD><CDBC>
ClearPointShape(drawLayerID);
}
///////////////////////////////////<2F>½<EFBFBD><C2BD><EFBFBD>ʸ<EFBFBD><CAB8>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF>///////////////////////////////////
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>
//CreateEmptyShapfile(drawLayerID, 0, RGB(0,255,0));
CreateEmptyShapfile(drawLayerID, 0, fontColor);
PtStruct pointDataArr[1];
pointDataArr[0].dX = dX;
pointDataArr[0].dY = dY;
//<2F><><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EBBABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
AddPoints2PointShapfile(drawLayerID, pointDataArr, 1);
/////////////////////<2F><>SHPͼ<50><CDBC><EFBFBD>м<EFBFBD><D0BC><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>Ϣ///////////////////////////////
//Label<65><6C><EFBFBD><EFBFBD>
CLabels labesPtr;
CShapefile shp = m_map.GetShapefile(drawLayerID);
labesPtr = (m_map.GetShapefile(drawLayerID)).GetLabels();
labesPtr.SetFontColor(fontColor);
labesPtr.SetAlignment(1);
labesPtr.SetFontBold(TRUE);
labesPtr.SetFontName(_T("Times New Roman"));
labesPtr.SetFontSize(11);
labesPtr.put_FontSize2(11);
labesPtr.SetFrameVisible(false);
/*
CLabelCategory labelCategory = labesPtr.AddCategory(strColor);
labelCategory.SetFontColor(fontColor);
labelCategory.SetAlignment(1);
labelCategory.SetFontBold(TRUE);
labelCategory.SetFontName(_T("Times New Roman"));
labelCategory.SetFontSize(11);
labelCategory.SetFrameVisible(false);*/
//<2F><><EFBFBD><EFBFBD>Labels
labesPtr.AddLabel((LPCTSTR)strPtName, dX, dY, 0, 0);
/////////////////////<2F><>SHPͼ<50><CDBC><EFBFBD>м<EFBFBD><D0BC><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>Ϣ///////////////////////////////
//<2F><><EFBFBD>»<EFBFBD><C2BB><EFBFBD>
m_map.Redraw();
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD>ע<EFBFBD><D7A2>Ϣ
//<2F><><EFBFBD><EFBFBD><EBA3BA>ͼ<EFBFBD><CDBC>ID<49><44>layerID
void CGISDlg::ClearPointShape(long layerID)
{
if (layerID == -1)
{
return;
}
CLabels labesPtr;
CShapefile sf = m_map.GetShapefile(layerID);
if (sf)
{
labesPtr = sf.GetLabels();
//<2F><><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>Ϣ
labesPtr.RemoveCategory(0);
labesPtr.Clear();
//<2F><><EFBFBD><EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD>ĺ<EFBFBD><C4BA><EFBFBD>
m_map.RemoveLayer(layerID);
}
//labesPtr = (m_map.GetShapefile(layerID)).GetLabels();
}
LRESULT CGISDlg::OnCheckFlyLineShowStatus(WPARAM wParam, LPARAM lParam)
{
//<2F><><EFBFBD>߱<EFBFBD><DFB1>
int lineIndex = wParam-1;
if (m_pHaveDrawLineFlag[lineIndex])
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĺ<EFBFBD><C4BA><EFBFBD>
ClearDrawedLine(lineIndex);
//ˢ<><CBA2>
m_map.Redraw();
//<2F><>ʶ<EFBFBD><CAB6>false
m_pHaveDrawLineFlag[lineIndex] = false;
}
return 0;
}
// <20><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD>÷<EFBFBD><C3B7>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>Ϣ<EFBFBD><CFA2><EFBFBD>;<EFBFBD><CDBE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>
void CGISDlg::SetMsgInfo(const HWND hwnd, const UINT msgID)
{
m_MsgHwnd = hwnd;
m_MsgID = msgID;
}
// <20><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD>ú<EFBFBD><C3BA><EFBFBD>װ<EFBFBD><D7B0><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD>;<EFBFBD><CDBE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>
void CGISDlg::SetLoadLineMsgInfo(const HWND hwnd, const UINT msgID)
{
m_MsgHwnd = hwnd;
m_LineLoadMsgID = msgID;
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>ѡ<EFBFBD>к<EFBFBD><D0BA><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EBA3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>curpoint<6E><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>x<EFBFBD><78>y
//<2F><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>true<75><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD>к<EFBFBD><D0BA><EFBFBD>
// false<73><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δѡ<CEB4>к<EFBFBD><D0BA><EFBFBD>
bool CGISDlg::BeMouseClickedLinePoint(const PtStruct curpoint, const long x, const long y)
{
CRect rc;
double ptPixelX = 0;
double ptPixelY = 0;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_map.ProjToPixel(curpoint.dX, curpoint.dY, &ptPixelX, &ptPixelY);
rc.left = static_cast<long>(ptPixelX - 20);
rc.top = static_cast<long>(ptPixelY - 20);
rc.right = static_cast<long>(ptPixelX + 20);
rc.bottom = static_cast<long>(ptPixelY + 20);
CPoint xy;
xy.x = x;
xy.y = y;
if(rc.PtInRect(xy))
{
return true;
}
return false;
}
void CGISDlg::MouseUpMap1(short Button, short Shift, long x, long y)
{
m_iPtSel=-1;
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>
void CGISDlg::OnAutoMove()
{
if (m_bAutoMove)
{
m_bAutoMove = false;
}
else
{
m_bAutoMove = true;
}
}
void CGISDlg::OnDesignLine() //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
if (m_bHaveAddMap)
{
//<2F>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD>ں<EFBFBD><DABA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬ʱ<CCAC><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (m_bLineDesign)
{
return;
}
else
{
m_bLineDesign = true;
// //<2F><>Ƶ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// m_bDesignFirstPoint = true;
}
// //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>еĺ<D0B5><C4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// m_pFlyLineDesign->ClearCurrentData();
//
// //<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶԻ<C6B6><D4BB><EFBFBD>
// m_pFlyLineDesign->ShowWindow(SW_SHOW);
//
// //<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
// m_pLineSectDlg->ShowWindow(SW_SHOW);
//
// //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>ʽ
// m_map.SetCursorMode(3);
}
else
{
BCGPMessageBox(_T("<EFBFBD><EFBFBD><EFBFBD>ȼ<EFBFBD><EFBFBD>ص<EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>"));
}
if(m_bLineDesign == false)
{
m_bLineDesign=true; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD>
}
}
void CGISDlg::OnData()
{
AfxMessageBox("this is test!!!");
}
void CGISDlg::OnUpdateAutoMov( CCmdUI *pCmdUI )
{
pCmdUI->SetCheck(m_bAutoMove);
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD>λ<EFBFBD><CEBB>
//<2F><><EFBFBD><EFBFBD><EBA3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>callbackMode<64><65><31><CEAA><EFBFBD>յ<EFBFBD>1<EFBFBD><31><32><CEAA><EFBFBD>յ<EFBFBD>2<EFBFBD><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>dX<64><58>γ<EFBFBD><CEB3>dY
void CGISDlg::DrawCallBackPoint(const BYTE callbackMode, const double dX, const double dY)
{
//û<>м<EFBFBD><D0BC>ص<EFBFBD>ͼ
if (!m_bHaveAddMap)
{
return;
}
if ((callbackMode>255) || (callbackMode<1))
{
return;
}
CString str;
str.Format(_T("CallbackPoint%d"), callbackMode);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
CString strColor = _T("<EFBFBD><EFBFBD>ɫ");
//<2F><><EFBFBD>ڵ<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>б<EFBFBD>ע
AddPointShapeLayer(m_pCallBackShapfileID[callbackMode-1], dX, dY, str, strColor, RGB(0,255,0));
}
//<2F><><EFBFBD>ܣ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD><EFBFBD>
void CGISDlg::OnRemoveGuidePtDraw()
{
//<2F>жϵ<D0B6>ʸ<EFBFBD><CAB8>ͼ<EFBFBD><CDBC><EFBFBD>Ƿ<EFBFBD><C7B7>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE>
if (m_guidePtShpLayerID != -1)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ʸ<EFBFBD><CAB8>ͼ<EFBFBD><CDBC>
ClearPointShape(m_guidePtShpLayerID);
m_guidePtShpLayerID = -1;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
m_guidePointMode = 0;
m_bGuideMode = false ;
//<2F><>ʾ<EFBFBD><CABE>ݲ˵<DDB2>
CMenu menu;
menu.LoadMenuA(IDR_MENU2);
menu.CheckMenuItem(IDM_GUIDE_FLY1,MF_BYCOMMAND|MF_UNCHECKED);
menu.CheckMenuItem(IDM_GUIDE_FLY2,MF_BYCOMMAND|MF_UNCHECKED);
m_map.Redraw();
}
void CGISDlg::OnUpdateGuideMode1( CCmdUI *pCmdUI )
{
if (m_guidePointMode == 1)
{
pCmdUI->SetCheck(1);
}
else
{
pCmdUI->SetCheck(0);
}
}
void CGISDlg::OnUpdateGuideMode2( CCmdUI *pCmdUI )
{
if (m_guidePointMode == 2)
{
pCmdUI->SetCheck(1);
}
else
{
pCmdUI->SetCheck(0);
}
}
void CGISDlg::OnAddpoint() //<2F><><EFBFBD><EFBFBD>Ϊ<EFBFBD>õ㹤<C3B5><E3B9A4>״̬
{
// TODO: Add your command handler code here
m_map.SetCursorMode(mapWindow::tkCursorMode::cmNone);
//m_map.SetCursorMode(5);
m_bSetPointModel=TRUE;
m_bLineDesign=TRUE;
m_bPtDel=FALSE;
m_bPtEdit=FALSE;
m_bDesignFirstPoint = false;
//<2F><>ƺ<EFBFBD><C6BA><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD>ĺ<EFBFBD><C4BA><EFBFBD>
if(m_bLineDesign)
{
for(int i=0;i<sizeof(m_pHaveDrawLineFlag) / sizeof(m_pHaveDrawLineFlag[0]);i++)
{
if(m_pHaveDrawLineFlag[i])
{
m_map.RemoveLayer(m_ppPlanLineShpLayerIDArr[i][1]);
m_map.RemoveLayer(m_ppPlanLineShpLayerIDArr[i][0]);
}
}
}
}
void CGISDlg::OnEnddesign() //<2F><><EFBFBD><EFBFBD><EFBFBD>
{
// TODO: Add your command handler code here
//m_bEndSetPoint=TRUE;
m_bSetPointModel=FALSE;
m_bLineDesign=FALSE;
m_bPtDel=FALSE;
m_bPtEdit=FALSE;
m_map.SetCursorMode(mapWindow::tkCursorMode::cmNone);
///////Save the Designed Line
if (m_designLinePointNum <= 0)
{
return;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>·<EFBFBD><C2B7>
CString strFlyLineName = _T("");
//<2F><><EFBFBD>߱<EFBFBD><DFB1>
int designLineID = 0;
//<2F><>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int lineProperty = 0;
//<2F><><EFBFBD>߸߶<DFB8>
double lineHeight = 1500.0;
//<2F>պϱ<D5BA>־
int designLineCE = 0;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1>Ի<EFBFBD><D4BB><EFBFBD>
CSetSaveLineID dlg;
if (dlg.DoModal() == IDOK)
{
//<2F><>·<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
strFlyLineName = dlg.m_strFlyLineName;
//<2F><><EFBFBD>߱<EFBFBD><DFB1>
designLineID = dlg.m_designLineID;
//<2F><>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
lineProperty = dlg.m_lineProperty;
//<2F><><EFBFBD>߸߶<DFB8>
lineHeight = dlg.m_LineHgt;
//<2F>պϱ<D5BA>־
if(dlg.m_bClosedLine==0) designLineCE+=2;
}
else
{
//δ<><CEB4><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѻ<EFBFBD><D1BB>Ƶĺ<C6B5><C4BA>ߵĺ<DFB5><C4BA><EFBFBD><EFBFBD>ݣ<EFBFBD>add by jackwong 2018.08.01<EFBFBD><EFBFBD>
memset(m_pDesignLineStruct, 0, sizeof(PtStruct)*m_lineMaxPointNum); //<2F><>ʼ<EFBFBD><CABC><EFBFBD>½<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_designLinePointNum = 0;
ClearDrawingInLineDesign();
return ;
}
CString strRouteFileDir = GetSoftwareCurrentDirectory() + _T("\\Route");
TCHAR s[10000];
s[0]=0;
CFileDialog dlgSave(FALSE, _T(".txt"), _T("*.txt"));
dlgSave.m_ofn.lpstrTitle=_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>");
dlgSave.m_ofn.lpstrFile=s;
dlgSave.m_ofn.nMaxFile=sizeof(s)/sizeof(TCHAR);
TCHAR filter[500]=_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>(*.txt)\0*.txt\0");
dlgSave.m_ofn.lpstrFilter=filter;
dlgSave.m_ofn.Flags|=OFN_OVERWRITEPROMPT|OFN_HIDEREADONLY|OFN_CREATEPROMPT;
dlgSave.m_ofn.lpstrInitialDir = strRouteFileDir;
if (IDOK == dlgSave.DoModal())
{
strFlyLineName = dlgSave.GetPathName();
////д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
FILE *fp = fopen(strFlyLineName, "w" );
if ( fp == NULL )
{
BCGPMessageBox("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
}
else
{
PtStruct pt;
memset(&pt, 0, sizeof(PtStruct));
//ԭ<><D4AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>
fprintf(fp, "%d, %d, %lf, %lf, %.2lf, %d, %02X, %02X\n", designLineID, 0, g_gcsLon, g_gcsLat, 0.0, 0, 0, 3);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E3BCAF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for ( int i = 0; i < m_designLinePointNum; i++ )
{
pt = m_pDesignLineStruct[i];
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD>ļ<EFBFBD>
if ( i < (m_designLinePointNum-1))
{
fprintf(fp, "%d, %d, %lf, %lf, %.2lf, %d, %02X, %02X\n", designLineID, pt.nPt, pt.dX, pt.dY, lineHeight, pt.nV, pt.ch1, 3);
}
else//<2F><><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ĺ<EFBFBD><C4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD>ļ<EFBFBD>
{
fprintf(fp, "%d, %d, %lf, %lf, %.2lf, %d, %02X, %02X\n", designLineID, pt.nPt, pt.dX, pt.dY, lineHeight, pt.nV, designLineCE/*pt.ch1*/, lineProperty);
}
}
fclose( fp );
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><C9B9>Ի<EFBFBD><D4BB><EFBFBD>
BCGPMessageBox(_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD>"));
}
}
memset(m_pDesignLineStruct, 0, sizeof(PtStruct)*m_lineMaxPointNum); //<2F><>ʼ<EFBFBD><CABC><EFBFBD>½<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_designLinePointNum = 0;
ClearDrawingInLineDesign();
int lineIndex =designLineID - 1;
if (m_pHaveDrawLineFlag[lineIndex])
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĺ<EFBFBD><C4BA><EFBFBD>
ClearDrawedLine(lineIndex);
OnShowGivenLine(strFlyLineName/*GetFlyLineName(designLineID)*/);
//OnShowGivenLine(GetFlyLineName(designLineID));
}
else
{
OnShowGivenLine(strFlyLineName/*GetFlyLineName(designLineID)*/);
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0
}
void CGISDlg::OnClearpoint() //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1>
{
//m_map.SetCursorMode(5);
m_map.SetCursorMode(mapWindow::tkCursorMode::cmNone);
m_bPtEdit=FALSE; //<2F>
m_bPtDel=FALSE; //ɾ<><C9BE>
m_bSetPointModel=FALSE;
m_bLineDesign=TRUE;
m_bLDSetPoint = FALSE;
RemoveDesignLineData();
}
void CGISDlg::OnEditProper() //<2F><><EFBFBD><EFBFBD>
{
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEB4A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/*m_map.SetCursorMode(5);
m_bSetPointModel=FALSE;
m_bLineDesign=TRUE;
m_bPtDel=FALSE;
m_bPtEdit=TRUE;*/
}
void CGISDlg::OnEditpoint() //<2F>
{
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEB4A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//m_map.SetCursorMode(5);
m_map.SetCursorMode(mapWindow::tkCursorMode::cmNone);
m_bSetPointModel=FALSE;
m_bLineDesign=TRUE;
m_bPtDel=FALSE;
m_bPtEdit=TRUE;
}
int CGISDlg::GetPtSel(int x,int y)//<2F><>ȡ<EFBFBD><C8A1><EFBFBD>ѡȡ<D1A1>ĵ<EFBFBD><C4B5>
{
int i=0;
double px=0;
double py=0;
int dis=10.0;
for (i=0;i<m_designLinePointNum;i++)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_map.ProjToPixel(m_pDesignLineStruct[i].dX,m_pDesignLineStruct[i].dY, &px, &py);
if (fabs(px-x)<dis&&fabs(py-y)<dis)
{
return i;
}
}
return -1;
}
//<2F><><EFBFBD><EFBFBD> by Wu 2023.09.14
int CGISDlg::GetPtSel(PtStruct* m_pLinePtStruct,int m_PointNum,int x,int y)
{
int i=0;
double px=0;
double py=0;
int dis=10.0;
for (i=0;i<m_PointNum;i++)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_map.ProjToPixel(m_pLinePtStruct[i].dX,m_pLinePtStruct[i].dY, &px, &py);
if (fabs(px-x)<dis&&fabs(py-y)<dis)
{
return i;
}
}
return -1;
}
void CGISDlg::OnDelpoint() //ɾ<><C9BE>
{
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEB4A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//m_map.SetCursorMode(5);
m_map.SetCursorMode(mapWindow::tkCursorMode::cmNone);
m_bSetPointModel=FALSE;
m_bLineDesign=TRUE;
m_bPtDel=TRUE;
m_bPtEdit=FALSE;
m_bDesignFirstPoint=true;
}
void CGISDlg::DrawLineDesign()
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>ı<EFBFBD>ע<EFBFBD><D7A2>Ϣ
ClearDrawingInLineDesign();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶĺ<C6B5><C4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DrawDesignLineData();
}
// <20><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><E0BCAD><EFBFBD>պ<EFBFBD><D5BA><EFBFBD> ------by Wu 2023.09.14
void CGISDlg::OnEditLine()
{
m_map.SetCursorMode(mapWindow::tkCursorMode::cmNone);
if (m_lineSelectedID > 0 && m_bSelectFeatureFlag) //<2F><><EFBFBD>պ<EFBFBD><D5BA><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ʾ
{
m_bEditLine = true;
ClearHighLightLine();
}
m_bSelectFeatureFlag = false;
}
//void CGISDlg::OnBindline1()
//{
// ::PostMessage(m_MsgHwnd,m_LineLoadMsgID,1,0); //<2F><><EFBFBD>͸<EFBFBD><CDB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><D7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1
//}
void CGISDlg::OnBindline2() //<2F><><EFBFBD>͸<EFBFBD><CDB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><D7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2
{
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEB4A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_struMapOut.cmd=MapCmd_BindLine;
m_struMapOut.ID=2;
::SendMessage(GetParent()->GetSafeHwnd(),MESSAGE_B8MAP,(int)(&m_struMapOut),0);
//::PostMessage(m_MsgHwnd,m_LineLoadMsgID,2,0);
}
void CGISDlg::OnLoadMyline1() //<2F><><EFBFBD>͸<EFBFBD><CDB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><D7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1
{
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEB4A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_struMapOut.cmd=MapCmd_BindLine;
m_struMapOut.ID=1;
::SendMessage(GetParent()->GetSafeHwnd(),MESSAGE_B8MAP,(int)(&m_struMapOut),0);
//::PostMessage(m_MsgHwnd,m_LineLoadMsgID,1,0);
}
void CGISDlg::OnBindline3() //<2F><><EFBFBD>͸<EFBFBD><CDB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><D7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3
{
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEB4A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_struMapOut.cmd=MapCmd_BindLine;
m_struMapOut.ID=3;
::SendMessage(GetParent()->GetSafeHwnd(),MESSAGE_B8MAP,(int)(&m_struMapOut),0);
//::PostMessage(m_MsgHwnd,m_LineLoadMsgID,3,0);
}
void CGISDlg::OnBindline4() //<2F><><EFBFBD>͸<EFBFBD><CDB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><D7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4
{
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEB4A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_struMapOut.cmd=MapCmd_BindLine;
m_struMapOut.ID=4;
::SendMessage(GetParent()->GetSafeHwnd(),MESSAGE_B8MAP,(int)(&m_struMapOut),0);
//::PostMessage(m_MsgHwnd,m_LineLoadMsgID,4,0);
}
void CGISDlg::OnBindline5() //<2F><><EFBFBD>͸<EFBFBD><CDB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><D7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>5
{
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEB4A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_struMapOut.cmd=MapCmd_BindLine;
m_struMapOut.ID=5;
::SendMessage(GetParent()->GetSafeHwnd(),MESSAGE_B8MAP,(int)(&m_struMapOut),0);
//::PostMessage(m_MsgHwnd,m_LineLoadMsgID,5,0);
}
void CGISDlg::OnBindline6() //<2F><><EFBFBD>͸<EFBFBD><CDB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><D7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>6
{
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEB4A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_struMapOut.cmd=MapCmd_BindLine;
m_struMapOut.ID=6;
::SendMessage(GetParent()->GetSafeHwnd(),MESSAGE_B8MAP,(int)(&m_struMapOut),0);
}
void CGISDlg::OnBindline7() //<2F><><EFBFBD>͸<EFBFBD><CDB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><D7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>7
{
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEB4A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_struMapOut.cmd=MapCmd_BindLine;
m_struMapOut.ID=7;
::SendMessage(GetParent()->GetSafeHwnd(),MESSAGE_B8MAP,(int)(&m_struMapOut),0);
}
void CGISDlg::OnBindline8() //<2F><><EFBFBD>͸<EFBFBD><CDB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><D7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>8
{
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEB4A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_struMapOut.cmd=MapCmd_BindLine;
m_struMapOut.ID=8;
::SendMessage(GetParent()->GetSafeHwnd(),MESSAGE_B8MAP,(int)(&m_struMapOut),0);
}
void CGISDlg::OnBindline9()
{
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEB4A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_struMapOut.cmd=MapCmd_BindLine;
m_struMapOut.ID=9;
::SendMessage(GetParent()->GetSafeHwnd(),MESSAGE_B8MAP,(int)(&m_struMapOut),0);
}
void CGISDlg::OnBindline10()
{
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEB4A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_struMapOut.cmd=MapCmd_BindLine;
m_struMapOut.ID=10;
::SendMessage(GetParent()->GetSafeHwnd(),MESSAGE_B8MAP,(int)(&m_struMapOut),0);
}
void CGISDlg::OnLayermng() //ͼ<><CDBC><EFBFBD><EFBFBD><EFBFBD>
{
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEB4A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_Layer->ShowWindow(SW_SHOW);
}
void CGISDlg::OnAddgtarget()
{
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEB4A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
//void CGISDlg::OnMouseHWheel(UINT nFlags, short zDelta, CPoint pt)
//{
// // <20>˹<EFBFBD><CBB9><EFBFBD>Ҫ<EFBFBD><D2AA> Windows Vista <20><><EFBFBD><EFBFBD>߰汾<DFB0><E6B1BE>
// // _WIN32_WINNT <20><><EFBFBD>ű<EFBFBD><C5B1><EFBFBD> >= 0x0600<30><30>
// // TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>ֵ
//
// CBCGPDialog::OnMouseHWheel(nFlags, zDelta, pt);
//}
void CGISDlg::SetRouteLine(int iLine ,PTLIST *pList)
{
CString sRouteDir = GetSoftwareCurrentDirectory();
//2015.11.24
CString str;
str.Format("%d", iLine);
CString m_sRoute = sRouteDir + _T( "\\route" ) + str + _T( ".txt" );
//2015.10.24 <09><><EFBFBD>Ӷ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
// if (!SearchDirectory(m_sRoute))
// {
// str = m_sRoute + "<22><><EFBFBD>߲<EFBFBD><DFB2><EFBFBD><EFBFBD><EFBFBD>";
// MessageBox(str, "<22><>ͼ");
// }
//
// DrawLineDataStruct CXLineGroup;
// m_lineManage.ReadLineDataFromFile(CXLineGroup,m_sRoute);
// DrawLineDataStruct CXLineGroup;
// if (m_lineManage.ReadLineDataFromFile(CXLineGroup,m_sRoute))
// {
// int idNum = m_lineManage.line->GetCount();
// //int idNum = CXLineGroup.linePointNum;
// POSITION ps = m_lineManage.line->GetHeadPosition();
// for (int i = 0; i < idNum; i++)
// {
// PtStruct pt = m_lineManage.line->GetNext(ps);
// pList->AddTail(pt);
// }
//
//
// }
// else
// {
// MessageBox("<22><>·<EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>","<22><>ͼ");
// pList->RemoveAll();
// }
}
//2016.02.19
// LRESULT CGISDlg::DRAW_ZK(WPARAM wParam, LPARAM lParam)
// {
// if (!m_bHaveAddMap)
// {
// return FALSE;
// }
// tagDRAWZK DrZk = m_DRAWZK;
//
// CString str="";
//
// str.Format("<22><><EFBFBD>ߺ<EFBFBD>:%02d <09><><EFBFBD>ɾ<EFBFBD>:%d ƫ<><C6AB><EFBFBD><EFBFBD>:%.2f <09>߶ȸ<DFB6><C8B8><EFBFBD>:%.2f <09>ɻ<EFBFBD><C9BB><EFBFBD><EFBFBD><EFBFBD>:%.2f <09><><EFBFBD><EFBFBD>:%.2f\n\
// <20><><EFBFBD><EFBFBD><EFBFBD>:%02d <09><>ƫ<EFBFBD><C6AB>:%d <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:%.2f <09><><EFBFBD>ٸ<EFBFBD><D9B8><EFBFBD>:%.2f <09>ɻ<EFBFBD><C9BB><EFBFBD>λ:%.2f",
// DrZk.ID_Line, DrZk.Dis_DF, DrZk.Yaw_Offset, DrZk.Heg_GD, DrZk.Dis_Air, DrZk.Heg_GRD,\
// DrZk.ID_Pt, DrZk.Dis_Offset, DrZk.Yaw_GD, DrZk.AirSpeed_GD, DrZk.Azi_Air);
//
//
// //GetDlgItem( IDC_STATIC_MAPSHOW )->EnableWindow( TRUE );
// //GetDlgItem(IDC_STATIC_MAPSHOW)->SetWindowText(str);
//
// return 0;
// }
void CGISDlg::OnNlinedesign()
{
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEB4A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_bLDSetPoint = TRUE;
m_pLineDesign = new CLineDesign();
m_pLineDesign->Create(IDD_DLG_LINEDESIGN,this);
m_pLineDesign->ShowWindow(TRUE);
if (!m_bHaveShowLineDesign)
{
m_bHaveShowLineDesign = true;
//m_pLineDesign->ShowLonLat(0, 0);
m_pLineDesign->ShowWindow(SW_SHOW);
}
else
{
m_bHaveShowLineDesign = false;
m_pLineDesign->ShowWindow(SW_HIDE);
}
}
void CGISDlg::OnUpdateNlinedesign(CCmdUI *pCmdUI)
{
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><E6B4A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
BOOL CGISDlg::ReadLine(int iLine,PTLIST *pList)
{
if (pList==NULL)
{
return FALSE;
}
else
{
pList->RemoveAll();
}
if (iLine<1||iLine>14) //2015.10.12
{
return FALSE;
}
CString str;
CString sLineName=GetFlyLineName(iLine);
if (!SearchDirectory(sLineName))
{
str=sLineName+" <20><><EFBFBD>߲<EFBFBD><DFB2><EFBFBD><EFBFBD><EFBFBD>";
MessageBox(str,"<EFBFBD><EFBFBD>ͼ");
return FALSE;
}
CLineManage tpLine;
if (tpLine.OpenFlyLineFile(sLineName,iLine,true))
{
int idNum=tpLine.line.GetCount();
POSITION ps=tpLine.line.GetHeadPosition();
for (int i=0;i<idNum;i++)
{
PtStruct pt=tpLine.line.GetNext(ps);
pList->AddTail(pt);
}
return TRUE;
}
else
{
MessageBox("<EFBFBD><EFBFBD>·<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!","<EFBFBD><EFBFBD>ͼ");
pList->RemoveAll();
return FALSE;
}
}
//<2F><>ʾ<EFBFBD><CABE><EFBFBD>պ<EFBFBD><D5BA>ߣ<EFBFBD>14<31><34>
void CGISDlg::OnShowPd10()
{
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEB4A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SetFlyLineShowStatus(14);
}
void CGISDlg::OnUpdateShowPd10(CCmdUI *pCmdUI)
{
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><E6B4A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
pCmdUI->SetCheck(m_pHaveDrawLineFlag[13]);
}
void CGISDlg::OnShowHs11()
{
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEB4A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SetFlyLineShowStatus(11);
}
//Ӧ<><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 11
void CGISDlg::OnUpdateShowHs11(CCmdUI *pCmdUI)
{
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD><E6B4A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
pCmdUI->SetCheck(m_pHaveDrawLineFlag[10]);
}
void CGISDlg::OnBindHs11()
{
m_struMapOut.cmd=MapCmd_BindLine;
m_struMapOut.ID=11;
::SendMessage(GetParent()->GetSafeHwnd(),MESSAGE_B8MAP,(int)(&m_struMapOut),0);
}
//<2F><><EFBFBD><EFBFBD>Χ<EFBFBD><CEA7> 12
void CGISDlg::OnShowTc12()
{
SetFlyLineShowStatus(12);
}
void CGISDlg::OnBindTc12()
{
m_struMapOut.cmd=MapCmd_BindLine;
m_struMapOut.ID=12;
::SendMessage(GetParent()->GetSafeHwnd(),MESSAGE_B8MAP,(int)(&m_struMapOut),0);
}
void CGISDlg::OnUpdateShowTc12(CCmdUI *pCmdUI)
{
pCmdUI->SetCheck(m_pHaveDrawLineFlag[11]);
}
void CGISDlg::OnSize(UINT nType, int cx, int cy)
{
CBCGPDialog::OnSize(nType, cx, cy);
// TODO: <20>ڴ˴<DAB4><CBB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (m_map.GetSafeHwnd())
{
CRect rc;
GetClientRect(&rc);
rc.top += 35;
m_map.MoveWindow(rc);
//RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST, 0);
}
}
void CGISDlg::On32855()
{
m_struMapOut.cmd=MapCmd_BindLine;
m_struMapOut.ID=14;
::SendMessage(GetParent()->GetSafeHwnd(),MESSAGE_B8MAP,(int)(&m_struMapOut),0);
}
void CGISDlg::UpdateDataInfo(int index,const char* key,double value)
{
switch (index)
{
case 0:
m_infoData.lineID = value;
break;
case 1:
m_infoData.ptID = value;
break;
case 2:
m_infoData.disDF = value;
break;
case 3:
m_infoData.disCP = value;
break;
case 4:
m_infoData.headingGD = value;
break;
case 5:
m_infoData.anglePH = value;
break;
case 6:
m_infoData.heightGD = value;
break;
case 7:
m_infoData.heightPC = value;
break;
case 8:
m_infoData.speedGD = value;
break;
case 9:
m_infoData.heightCG = value;
break;
case 10:
m_infoData.dis = value;
break;
case 11:
m_infoData.heading = value;
break;
default:
break;
}
DrawCanvas();
}
//<2F><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>
void CGISDlg::DrawCanvas()
{
COLORREF color = RGB(50,235,50);
//COLORREF colorback= RGB(0,0,0);//<2F>ڵ<EFBFBD>
CRect rec;
m_map.GetClientRect(&rec);
const long leftEdge = rec.left;
const long topEdge = rec.top + 20;
const int horizonInter = 11;
const int verticalInter = rec.Height() / 19;
CLabels labesPtr;
if(m_canvasLayerID != -1)
{
labesPtr = m_map.GetDrawingLabels(m_canvasLayerID);
labesPtr.Clear();
CString str = "";
str.Format(_T("%-s%-d"),_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:"),m_infoData.lineID);
labesPtr.AddLabel(str, leftEdge + horizonInter, topEdge + verticalInter * 1, 0, 0);
str.Format(_T("%-s%-d"),_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:"),m_infoData.ptID);
labesPtr.AddLabel(str, leftEdge + horizonInter, topEdge + verticalInter * 2, 0, 0);
str.Format(_T("%-s%-d"),_T("<EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><EFBFBD><EFBFBD>:"),m_infoData.disDF);
labesPtr.AddLabel(str, leftEdge + horizonInter, topEdge + verticalInter * 4, 0, 0);
str.Format(_T("%-s%-.1lf"),_T("<EFBFBD><EFBFBD>ƫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>:"),m_infoData.disCP);
labesPtr.AddLabel(str, leftEdge + horizonInter, topEdge + verticalInter * 5, 0, 0);
str.Format(_T("%-s%-.1lf"),_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:"),m_infoData.headingGD);
labesPtr.AddLabel(str, rec.left + horizonInter/* - 11*/, topEdge + verticalInter * 7, 0, 0);
str.Format(_T("%-s%-.1lf"),_T("ƫ<EFBFBD><EFBFBD><EFBFBD>Ƕ<EFBFBD>:"),m_infoData.anglePH);
labesPtr.AddLabel(str, rec.left + horizonInter/* - 11*/, topEdge + verticalInter * 8, 0, 0);
str.Format(_T("%-s%-.1lf"),_T("<EFBFBD>߶<EFBFBD>ƫ<EFBFBD><EFBFBD>:"),m_infoData.heightPC);
labesPtr.AddLabel(str, rec.left + horizonInter, topEdge + verticalInter * 10, 0, 0);
str.Format(_T("%-s%-.1lf"),_T("<EFBFBD>߶ȸ<EFBFBD><EFBFBD><EFBFBD>:"),m_infoData.heightGD);
labesPtr.AddLabel(str, rec.left + horizonInter, topEdge + verticalInter * 11, 0, 0);
str.Format(_T("%-s%-.1lf"),_T("<EFBFBD><EFBFBD><EFBFBD>ٸ<EFBFBD><EFBFBD><EFBFBD>:"),m_infoData.speedGD);
labesPtr.AddLabel(str, rec.left + horizonInter, topEdge + verticalInter * 13, 0, 0);
str.Format(_T("%-s%-.1lf"),_T("<EFBFBD><EFBFBD><EFBFBD>г<EFBFBD><EFBFBD><EFBFBD>:"),m_infoData.heightCG);
labesPtr.AddLabel(str, rec.left + horizonInter, topEdge + verticalInter * 14, 0, 0);
str.Format(_T("%-s%-.1lf"),_T("<EFBFBD>ɻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:"),m_infoData.dis);
labesPtr.AddLabel(str, rec.left + horizonInter, topEdge + verticalInter * 16, 0, 0);
str.Format(_T("%-s%-.1lf"),_T("<EFBFBD>ɻ<EFBFBD><EFBFBD><EFBFBD>λ:"),m_infoData.heading);
labesPtr.AddLabel(str, rec.left + horizonInter /*- 5*/, topEdge + verticalInter * 17, 0, 0);
}
else
{
m_canvasLayerID = m_map.NewDrawing(0);
labesPtr = m_map.GetDrawingLabels(m_canvasLayerID);
CLabelCategory left = labesPtr.AddCategory(_T(""));
left.SetFontColor(color);
left.SetAlignment(2);//0<><30><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD>1 <20>Ҷ<EFBFBD><D2B6>룬2<EBA3AC><32>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>
left.SetOffsetX(0);
left.SetOffsetY(0);
left.SetFontBold(true);
left.SetFontName(LPCTSTR("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"));
left.SetFontSize(13);
left.SetFrameBackColor(RGB(0,0,0));
left.SetFrameVisible(TRUE);
left.SetFrameTransparency(0);
CLabelCategory right = labesPtr.AddCategory(_T(""));
right.SetFontColor(color);
right.SetAlignment(2);//0<><30><EFBFBD>ң<EFBFBD>1 <20><><EFBFBD>У<EFBFBD>2<EFBFBD><32>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>
right.SetOffsetX(0);
right.SetOffsetY(0);
right.SetFontBold(true);
right.SetFontName(LPCTSTR("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"));
right.SetFontSize(13);
right.SetFrameBackColor(RGB(0,0,0));
right.SetFrameVisible(TRUE);
right.SetFrameTransparency(0);
}
//m_map.Redraw();
}
void CGISDlg::SetLabelCategory(const long& shapeID, int fontSize /*= 12*/, unsigned long fontColor /*= RGB(255,0,0)*/, unsigned long frameBackColor /*= RGB(0,0,0)*/,
double XOffset/* = 0*/, double YOffset /*= 0*/)
{
if(shapeID == -1)
return;
CLabels labesPtr;
labesPtr = (m_map.GetShapefile(shapeID)).GetLabels();
CLabelCategory labelCategory = labesPtr.AddCategory(_T(""));
labelCategory.SetFontColor(fontColor);
labelCategory.SetAlignment(1);
labelCategory.SetOffsetX(XOffset);
labelCategory.SetOffsetY(YOffset);
labelCategory.SetFontBold(TRUE);
labelCategory.SetFontName(LPCTSTR("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"));
labelCategory.SetFontSize(fontSize);
labelCategory.SetFrameBackColor(frameBackColor);
labelCategory.SetFrameVisible(TRUE);
}
void CGISDlg::OnMove(int x, int y)
{
CBCGPDialog::OnMove(x, y);
// TODO: <20>ڴ˴<DAB4><CBB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CRect rc;
GetClientRect(&rc);
ClientToScreen(&rc);
/*if (m_pUavSelDlg1->GetSafeHwnd())
{
m_pUavSelDlg1->MoveWindow(rc.left,rc.top+10,50,50);
}
if (m_pUavSelDlg2->GetSafeHwnd())
{
m_pUavSelDlg2->MoveWindow(rc.left+rc.Width()/2-100,rc.top+10,50,50);
}
if (m_pUavSelDlg3->GetSafeHwnd())
{
m_pUavSelDlg3->MoveWindow(rc.left+rc.Width()-100,rc.top+10,50,50);
}*/
}
BOOL CGISDlg::OnWndMsg(UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pResult)
{
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>ר<EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD>
return CBCGPDialog::OnWndMsg(message, wParam, lParam, pResult);
}
//<2F>л<EFBFBD><D0BB>ɻ<EFBFBD>
afx_msg LRESULT CGISDlg::OnSelUav(WPARAM wParam, LPARAM lParam)
{
return 0;
}
//<2F><><EFBFBD>ӵر<D3B5><D8B1>
void CGISDlg::OnAddTarget()
{
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEB4A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/*if (m_pTargetDlg->GetSafeHwnd())
{
ReadTargetIni(false);
m_pTargetDlg->ShowWindow(SW_SHOW);
}*/
m_dlgMarker.ShowWindow(TRUE);
}
void CGISDlg::ReadTargetIni(bool bDraw)
{
CString m_MapPath; //Ĭ<>ϴ򿪵<CFB4>ͼ·<CDBC><C2B7>
char lonBuf[255];
char latBuf[255];
CString fileName = GetSoftwareCurrentDirectory() + "\\target.ini";
CString strTarget ;
for (int i = 1; i < 255 ; i++)
{
if (m_pTargetDlg)
{
m_pTargetDlg->SetExistFlag(i,false);
}
strTarget.Format("%d",i);
BOOL blon = GetPrivateProfileString(strTarget,"lon",0,lonBuf,20,fileName);
BOOL blat = GetPrivateProfileString(strTarget,"lat",0,latBuf,20,fileName);
if (blon&&blat)
{
double lon = atof(lonBuf);
double lat = atof(latBuf);
if (fabs(lon)>180.0||fabs(lat)>90.0)//<2F><><EFBFBD>ݷǷ<DDB7><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
WritePrivateProfileString(strTarget,"lon",NULL, fileName);
WritePrivateProfileString(strTarget,"lat",NULL, fileName);
WritePrivateProfileString(strTarget,"alt",NULL, fileName);
continue;
}
m_targets[i-1].id = i;
m_targets[i-1].lon = lon;
m_targets[i-1].lat = lat;
if (bDraw)
{
AddTargetPoint(i,lon,lat);
}
if (m_pTargetDlg)
{
m_pTargetDlg->SetExistFlag(i,true);
}
}
else
{
m_targets[i-1].id = -1;
}
}
}
afx_msg LRESULT CGISDlg::OnDrawTarget(WPARAM wParam, LPARAM lParam)
{
if (m_pTargetDlg->GetSafeHwnd())
{
int id = 0;
double lon = 0.0;
double lat = 0.0;
double alt = 0.0;
m_pTargetDlg->GetTargetLLA(id,lon,lat,alt);
if (id>0&&id<255)
{
m_targets[id-1].id = id;
m_targets[id-1].lon = lon;
m_targets[id-1].lat = lat;
}
AddTargetPoint(id,lon,lat);
}
return 0;
}
void CGISDlg::OnShowWindow(BOOL bShow, UINT nStatus)
{
CBCGPDialog::OnShowWindow(bShow, nStatus);
// TODO: <20>ڴ˴<DAB4><CBB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(bShow)
{
HCURSOR hCur = LoadCursor(NULL,IDC_ARROW);
::SetCursor(hCur);
CString dir = "";
CString fileName = GetSoftwareCurrentDirectory() + "\\map.ini";
::GetPrivateProfileString("map", "layer","",dir.GetBuffer(256),256, fileName);
dir.ReleaseBuffer(256);
if(!m_bHaveAddMap)
{
CFileFind fd;
if (fd.FindFile(dir))
{
Openlocalfile(dir);
}
fd.Close();
}
}
//ReadTargetIni(true);
}
//ɾ<><C9BE>ѡ<EFBFBD>е<EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><E3A3A8>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7>ͼ<EFBFBD><CDBC><EFBFBD>еĵ㣬<C4B5><E3A3AC><EFBFBD>Բ<EFBFBD><D4B2><EFBFBD>ȫ<EFBFBD><C8AB>ɾ<EFBFBD><C9BE><EFBFBD>ٻ<EFBFBD><D9BB>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD><EFBFBD>
void CGISDlg::OnTargetDelete()
{
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEB4A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CString strID = "";
strID.Format("%d",m_targetSelID);
CString fileName = GetSoftwareCurrentDirectory() + "\\target.ini";
WritePrivateProfileString(strID,"lon",NULL, fileName);
WritePrivateProfileString(strID,"lat",NULL, fileName);
WritePrivateProfileString(strID,"alt",NULL, fileName);
m_map.GetShapefile(m_targetDrawLayerID).EditClear();
m_map.GetShapefile(m_targetDrawLayerID).GetLabels().Clear();
ReadTargetIni(true);
m_map.Redraw();
m_targetSelID = 0;
}
//<2F>ڵ<EFBFBD>ͼ<EFBFBD><CDBC>ѡ<EFBFBD><D1A1>
afx_msg LRESULT CGISDlg::OnSendSelectTarget(WPARAM wParam, LPARAM lParam)
{
m_bSelectDropPoint = true;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>ʽ
m_map.SetCursorMode(3);
return 0;
}
//<2F><>ʾ<EFBFBD><CABE>ע<EFBFBD><D7A2>
afx_msg LRESULT CGISDlg::OnShowPointInMap(WPARAM wParam, LPARAM lParam)
{
if (!m_bHaveAddMap)
{
return 0;
}
if (0 == m_longGroundID)
{
//<2F><><EFBFBD>ڵ<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>б<EFBFBD>ע
AddPointShapeLayer(m_longGroundID, m_dlgLightRegion.m_dGroundLon, m_dlgLightRegion.m_dGroundLat, _T("GCS(LOS)"), _T("<EFBFBD><EFBFBD>ɫ"), RGB(255,0,0));
}
else
{
ClearPointShape(m_longGroundID);
m_longGroundID = 0;
}
return 0;
}
//<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
afx_msg LRESULT CGISDlg::OnShowPointVisible(WPARAM wParam, LPARAM lParam)
{
if (m_visbleCircleLayerID < 0)
{
m_gisManager->CreateEmptyAreaShapfile(m_visbleCircleLayerID,RGB(0,255,0),RGB(0,255,0),40); //<2F><>ɫ
}
for (int i=0;i<360;i++)
{
m_gisManager->AddOnePoint2Shapfile(m_visbleCircleLayerID,2,g_structPointVisible[i].lon,g_structPointVisible[i].lat);
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
if (0 == m_map.GetShapefile(m_visbleCircleLayerID).GetShape(0).GetArea())
{
m_map.GetShapefile(m_visbleCircleLayerID).EditClear();
}
m_map.Redraw();
/*structPoint *_structPoint = (structPoint*)wParam;
m_gisManager->AddOnePoint2Shapfile(m_visbleCircleLayerID,2,_structPoint->lon,_structPoint->lat);*/
return 0;
}
//<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
afx_msg LRESULT CGISDlg::OnShowPointNotVisible(WPARAM wParam, LPARAM lParam)
{
if (m_notVisibleCircleLayerID < 0)
{
m_gisManager->CreateEmptyAreaShapfile(m_notVisibleCircleLayerID,RGB(255,0,0),RGB(255,0,0),40); //<2F><>ɫ
}
for (int i=0;i<722;i++)
{
m_gisManager->AddOnePoint2Shapfile(m_notVisibleCircleLayerID,2,g_structPointNotVisible[i].lon,g_structPointNotVisible[i].lat);
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
if (0 == m_map.GetShapefile(m_notVisibleCircleLayerID).GetShape(0).GetArea())
{
m_map.GetShapefile(m_notVisibleCircleLayerID).EditClear();
}
m_map.Redraw();
/*structPoint *_structPoint = (structPoint*)wParam;
m_gisManager->AddOnePoint2Shapfile(m_notVisibleCircleLayerID,2,_structPoint->lon,_structPoint->lat);*/
return 0;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBB2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>
afx_msg LRESULT CGISDlg::OnSendClearShape(WPARAM wParam, LPARAM lParam)
{
if (m_visbleCircleLayerID > 0)
{
m_map.GetShapefile(m_visbleCircleLayerID).EditClear();
}
if (m_notVisibleCircleLayerID > 0)
{
m_map.GetShapefile(m_notVisibleCircleLayerID).EditClear();
}
m_map.Redraw();
return 0;
}
//ʵʱ<CAB5><CAB1>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
afx_msg LRESULT CGISDlg::OnShowAreaVisible(WPARAM wParam, LPARAM lParam)
{
if (m_visiRealCircleLayerID < 0)
{
m_gisManager->CreateEmptyAreaShapfile(m_visiRealCircleLayerID,RGB(0,255,0),RGB(0,255,0),40); //<2F><>ɫ
}
for (int i=0;i <= int(wParam);i++)
{
m_gisManager->AddOnePoint2Shapfile(m_visiRealCircleLayerID,2,g_structPointVisiReal[i].lon,g_structPointVisiReal[i].lat);
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
if (0 == m_map.GetShapefile(m_visiRealCircleLayerID).GetShape(0).GetArea())
{
m_map.GetShapefile(m_visiRealCircleLayerID).EditClear();
}
/*double _uavlon,_uavlat;
CalculatePtCoordinate(_uavlon, _uavlat, m_dlgLightRegion.m_dRealTime_GCSlon, m_dlgLightRegion.m_dRealTime_GCSlat, m_dlgLightRegion.m_dRealTime_AngToGCS, m_dlgLightRegion.m_dRealTime_DisToGCS, 3);
if (m_RealCircleLayerID < 0)
{
m_gisManager->CreateEmptyAreaShapfile(m_RealCircleLayerID,RGB(0,0,255),RGB(0,0,255),40);
}
double ptLon, ptLat;
for (int i = 0; i<=360;i++)
{
CalculatePtCoordinate(ptLon, ptLat, _uavlon, _uavlat, i, 2800, 3);
m_gisManager->AddOnePoint2Shapfile(m_RealCircleLayerID,2,ptLon, ptLat);
}*/
m_map.Redraw();
return 0;
}
//ʵʱ<CAB5><CAB1>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
afx_msg LRESULT CGISDlg::OnShowAreaNotVisible(WPARAM wParam, LPARAM lParam)
{
if (m_notVisiRealCircleLayerID < 0)
{
m_gisManager->CreateEmptyAreaShapfile(m_notVisiRealCircleLayerID,RGB(255,0,0),RGB(255,0,0),40); //<2F><>ɫ
}
for (int i=0;i <= int(wParam);i++)
{
m_gisManager->AddOnePoint2Shapfile(m_notVisiRealCircleLayerID,2,g_structPointNotVisiReal[i].lon,g_structPointNotVisiReal[i].lat);
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
if (0 == m_map.GetShapefile(m_notVisiRealCircleLayerID).GetShape(0).GetArea())
{
m_map.GetShapefile(m_notVisiRealCircleLayerID).EditClear();
}
m_map.Redraw();
return 0;
}
//<2F><><EFBFBD>ʵʱ<CAB5><CAB1><EFBFBD><EFBFBD>
afx_msg LRESULT CGISDlg::OnShowClearArea(WPARAM wParam, LPARAM lParam)
{
if (m_visiRealCircleLayerID > 0)
{
m_map.GetShapefile(m_visiRealCircleLayerID).EditClear();
}
if (m_notVisiRealCircleLayerID > 0)
{
m_map.GetShapefile(m_notVisiRealCircleLayerID).EditClear();
}
/*if (m_RealCircleLayerID > 0)
{
m_map.GetShapefile(m_RealCircleLayerID).EditClear();
}*/
m_map.Redraw();
return 0;
}
//ɾ<><C9BE>ͨ<EFBFBD>ӵȸ<D3B5><C8B8><EFBFBD>ͼ<EFBFBD><CDBC>
afx_msg LRESULT CGISDlg::OnDelLineLayer(WPARAM wParam, LPARAM lParam)
{
for (int i=0;i<20;i++)
{
if (m_longContourLineID[i] > 0)
{
m_map.GetShapefile(m_longContourLineID[i]).EditClear();
}
m_gisManager->CreateEmptyLineShapfile(m_longContourLineID[i],RGB(0,255,0),1.5); //<2F><>ɫ
if (m_longContourTextID[i] != 0)
{
ClearPointShape(m_longContourTextID[i]);
m_longContourTextID[i] = 0;
}
}
m_map.Redraw();
return 0;
}
//<2F><><EFBFBD>ӵ㵽ͨ<E3B5BD>ӵȸ<D3B5><C8B8><EFBFBD>ͼ<EFBFBD><CDBC>
afx_msg LRESULT CGISDlg::OnAddLineLayer(WPARAM wParam, LPARAM lParam)
{
structPoint *_structPoint = (structPoint*)wParam;
m_gisManager->AddOnePoint2Shapfile(m_longContourLineID[(int)lParam],1,_structPoint->lon,_structPoint->lat);
//<2F><><EFBFBD>߶<EFBFBD>
if (m_longContourTextID[(int)lParam] == 0)
{
//<2F><>ע
CString str;
str.Format(_T("%dm"), (int)lParam * 500);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>
CreateEmptyShapfile(m_longContourTextID[(int)lParam], 0, RGB(255,0,0)); //<2F><>ɫ
//Label<65><6C><EFBFBD><EFBFBD>
CLabels labesPtr;
labesPtr = (m_map.GetShapefile(m_longContourTextID[(int)lParam])).GetLabels();
CLabelCategory labelCategory = labesPtr.AddCategory(_T("<EFBFBD><EFBFBD>ɫ"));
labelCategory.SetFontColor(RGB(255,0,0));
labelCategory.SetAlignment(1);
labelCategory.SetFontBold(TRUE);
labelCategory.SetFontName(_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"));
labelCategory.SetFontSize(11);
labesPtr.AddLabel(str, _structPoint->lon, _structPoint->lat + 0.0005, 0, 0);
}
m_map.Redraw();
return 0;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>GIS<49>Ի<EFBFBD><D4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>
afx_msg LRESULT CGISDlg::OnSendRegionToGis(WPARAM wParam, LPARAM lParam)
{
if (1 == (int)wParam)
{
g_bSelectDropPoint = true;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>ʽ
m_map.SetCursorMode(3);
}
else if (2 == (int)wParam)
{
if (m_longSelectLineID > 0)
{
m_map.GetShapefile(m_longSelectLineID).EditClear();
}
if (m_longLabelPlotID != 0)
{
ClearPointShape(m_longLabelPlotID);
m_longLabelPlotID = 0;
}
m_map.Redraw();
}
else if (3 == (int)wParam)
{
structPoint *_structPoint = (structPoint*)lParam;
if (m_longSelectLineID > 0)
{
m_map.GetShapefile(m_longSelectLineID).EditClear();
}
m_gisManager->CreateEmptyLineShapfile(m_longSelectLineID,RGB(0,255,0),2);
m_gisManager->AddOnePoint2Shapfile(m_longSelectLineID,1,m_dlgLightRegion.m_dGroundLon,m_dlgLightRegion.m_dGroundLat);
m_gisManager->AddOnePoint2Shapfile(m_longSelectLineID,1,_structPoint->lon,_structPoint->lat);
double _distance = 0.0, _angle = 0.0;
CalculateTwoPtsDistanceAzimuth(_distance, _angle, m_dlgLightRegion.m_dGroundLon,m_dlgLightRegion.m_dGroundLat,_structPoint->lon,_structPoint->lat, 3);
CString str;
str.Format(_T("D:%.1fkm A:%.1f<EFBFBD><EFBFBD>"), _distance/1000, _angle);
if (m_longLabelPlotID != 0)
{
ClearPointShape(m_longLabelPlotID);
m_longLabelPlotID = 0;
}
//<2F><>ע<EFBFBD><D7A2><EFBFBD><EFBFBD>ͷ<EFBFBD>λ
AddPointShapeLayer(m_longLabelPlotID,_structPoint->lon,_structPoint->lat, str, _T("<EFBFBD><EFBFBD>ɫ"), RGB(255,0,0));
}
return 0;
}
//<2F><><EFBFBD><E6BABD><EFBFBD>ϵĵ<CFB5>
afx_msg LRESULT CGISDlg::OnDrawLinePoint(WPARAM wParam, LPARAM lParam)
{
if (m_longLinePointID > 0)
{
ClearPointShape(m_longLinePointID);
m_longLinePointID = 0;
}
if (1 == (int)lParam)
{
structPoint *_structPoint = (structPoint*)wParam;
//<2F><><EFBFBD>ڵ<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>б<EFBFBD>ע
AddPointShapeLayer(m_longLinePointID, _structPoint->lon, _structPoint->lat, _T("Pt"), _T("<EFBFBD><EFBFBD>ɫ"), RGB(255,0,0));
}
return 0;
}
//<2F><>ʾʵʱ<CAB5><CAB1>ײ<EFBFBD><D7B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
afx_msg LRESULT CGISDlg::OnShowCrashArea(WPARAM wParam, LPARAM lParam)
{
if (1 == (int)wParam)
{
if (m_crashAreaLayerID > 0)
{
m_map.GetShapefile(m_crashAreaLayerID).EditClear();
}
m_gisManager->CreateEmptyAreaShapfile(m_crashAreaLayerID,RGB(0,255,0),RGB(0,255,0),40); //<2F><>ɫ
for (int i=0;i < 360;i++)
{
m_gisManager->AddOnePoint2Shapfile(m_crashAreaLayerID,2,g_structPointCrashReal[i].lon,g_structPointCrashReal[i].lat);
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
if (0 == m_map.GetShapefile(m_crashAreaLayerID).GetShape(0).GetArea())
{
m_map.GetShapefile(m_crashAreaLayerID).EditClear();
}
m_map.Redraw();
}
else if (0 == (int)wParam)
{
if (m_crashAreaLayerID > 0)
{
m_map.GetShapefile(m_crashAreaLayerID).EditClear();
}
m_map.Redraw();
}
return 0;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>÷<EFBFBD>Χ
afx_msg LRESULT CGISDlg::OnSendDrawFight(WPARAM wParam, LPARAM lParam)
{
if (m_fightRegionLayerID > 0)
{
m_map.GetShapefile(m_fightRegionLayerID).EditClear();
m_map.Redraw();
}
if (0 == (int)lParam)
{
return 0;
}
m_gisManager->CreateEmptyAreaShapfile(m_fightRegionLayerID,RGB(0,255,0),RGB(0,255,0),20);
structPoint *_structPoint = (structPoint*)wParam;
double ptLon,ptLat;
for (int i=0;i<=360;i++)
{
CalculatePtCoordinate(ptLon, ptLat, _structPoint->lon, _structPoint->lat, i, (int)lParam, 3);
m_gisManager->AddOnePoint2Shapfile(m_fightRegionLayerID,2,ptLon, ptLat);
}
m_map.Redraw();
return 0;
}
//<2F><><EFBFBD>Ƹ߳<C6B8><DFB3><EFBFBD><EFBFBD><EFBFBD>
afx_msg LRESULT CGISDlg::OnSendDrawDemRegion(WPARAM wParam, LPARAM lParam)
{
if (m_DemRegionLayerID[(int)lParam] > 0)
{
m_map.GetShapefile(m_DemRegionLayerID[(int)lParam]).EditClear();
m_DemRegionLayerID[(int)lParam] = -1;
m_map.Redraw();
}
else
{
m_gisManager->CreateEmptyAreaShapfile(m_DemRegionLayerID[(int)lParam],RGB(0,0,255),RGB(0,0,255),20);
structPoint *_structPoint = (structPoint*)wParam;
m_gisManager->AddOnePoint2Shapfile(m_DemRegionLayerID[(int)lParam],2,_structPoint->lon, _structPoint->lat);
m_gisManager->AddOnePoint2Shapfile(m_DemRegionLayerID[(int)lParam],2,_structPoint->lon + 1, _structPoint->lat);
m_gisManager->AddOnePoint2Shapfile(m_DemRegionLayerID[(int)lParam],2,_structPoint->lon + 1, _structPoint->lat+1);
m_gisManager->AddOnePoint2Shapfile(m_DemRegionLayerID[(int)lParam],2,_structPoint->lon, _structPoint->lat+1);
m_gisManager->AddOnePoint2Shapfile(m_DemRegionLayerID[(int)lParam],2,_structPoint->lon, _structPoint->lat);
m_map.Redraw();
}
return 0;
}
//<2F><><EFBFBD>ߵ<EFBFBD>ͼ<EFBFBD><CDBC>λ
afx_msg LRESULT CGISDlg::OnZoomToLocation(WPARAM wParam, LPARAM lParam)
{
//double lon = (double)wParam/1000000;
//double lat = (double)lParam/1000000;
double* lon = (double*)wParam;
double* lat = (double*)lParam;
ZoomToLocation(*lon,*lat);
return 0;
}
void CGISDlg::OnMenuLightRegion()
{
/*if (m_dlgLightRegion.GetSafeHwnd())
{
m_dlgLightRegion.ShowWindow(TRUE);
}*/
g_bDemAnalysising = true;
g_iDemPointNum = 0;
}
//<2F>رո̷߳<DFB3><CCB7><EFBFBD><EFBFBD>Ի<EFBFBD><D4BB><EFBFBD>ʱ
afx_msg LRESULT CGISDlg::OnSendCloseDemAlt(WPARAM wParam, LPARAM lParam)
{
//<2F><><EFBFBD><EFBFBD>̷߳<DFB3><CCB7><EFBFBD>ͼ<EFBFBD><CDBC>
for (int i=0;i<g_iDemAltPtNum;i++)
{
m_map.RemoveLayer(g_lDemAltLayerID[i]);
if (g_lDemAltDisLayerID[i] > 0)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ʸ<EFBFBD><CAB8>ͼ<EFBFBD><CDBC>
ClearPointShape(g_lDemAltDisLayerID[i]);
g_lDemAltDisLayerID[i] = -1;
}
if (g_lDemPtNumLayerID[i] > 0)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>ʸ<EFBFBD><CAB8>ͼ<EFBFBD><CDBC>
ClearPointShape(g_lDemPtNumLayerID[i]);
g_lDemPtNumLayerID[i] = -1;
}
}
return 0;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void CGISDlg::OnMenuEntryPoint()
{
m_struMapOut.cmd = MapCmd_EntryPoint;
::SendMessage(GetParent()->GetSafeHwnd(),MESSAGE_B8MAP,(int)(&m_struMapOut),0);
}
//<2F><><EFBFBD>߳<EFBFBD><DFB3><EFBFBD><EFBFBD><EFBFBD>
void CGISDlg::OnMenuPlotdemArea()
{
if (m_dlgLightRegion.GetSafeHwnd())
{
m_dlgLightRegion.OnBnClickedButtonGetDemRegion();
}
m_bPlotDemArea = !m_bPlotDemArea;
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3>ı<EFBFBD>CursorMode
afx_msg LRESULT CGISDlg::OnSetMapCursorMode(WPARAM wParam, LPARAM lParam)
{
m_map.SetCursorMode((long)wParam);
return 0;
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD>ǵ<EFBFBD>
afx_msg LRESULT CGISDlg::OnDrawMarker(WPARAM wParam, LPARAM lParam)
{
if (int(lParam) == 1) //<2F><><EFBFBD>ر<EFBFBD>ǵ<EFBFBD>
{
if (g_lMarkerLayerID[(int)wParam] >= 0)
{
ClearPointShape(g_lMarkerLayerID[(int)wParam]);
g_lMarkerLayerID[(int)wParam] = -1;
}
g_bMarkerPlot[(int)wParam] = false;
}
else //<2F><>ʾ<EFBFBD><CABE>ǵ<EFBFBD>
{
if (g_lMarkerLayerID[(int)wParam] >= 0)
{
ClearPointShape(g_lMarkerLayerID[(int)wParam]);
g_lMarkerLayerID[(int)wParam] = -1;
}
//<2F><><EFBFBD>ڵ<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>б<EFBFBD>ע
AddPointShapeLayer(g_lMarkerLayerID[(int)wParam], g_iMarkerLon[(int)wParam], g_iMarkerLat[(int)wParam], g_iMarkerName[(int)wParam], _T(""), RGB(255,0,0));
g_bMarkerPlot[(int)wParam] = true;
}
return 0;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>վ<EFBFBD><D5BE><EFBFBD>
void CGISDlg::OnMenuClearGCS()
{
if (m_gcsPtShpLayerID != -1)
{
ClearPointShape(m_gcsPtShpLayerID);
m_gcsPtShpLayerID = -1;
}
}
//<2F>Ƿ<EFBFBD><C7B7><EFBFBD>ʾADS<44>ɻ<EFBFBD><C9BB><EFBFBD>Ϣ
void CGISDlg::OnMenuADSB()
{
m_bEnableShowADSB = !m_bEnableShowADSB;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD>
LRESULT CGISDlg::OnTimerDrawUAV(WPARAM wParam, LPARAM lParam)
{
//δ<><CEB4><EFBFBD>ص<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (!m_bHaveAddMap)
{
return 0;
}
if (!m_bEnableShowADSB)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ADS<44>ɻ<EFBFBD><C9BB>ı<EFBFBD><C4B1>ͼ<EFBFBD><CDBC>
for(int i=0;i<MAX_PLANE_NUM_ADS;i++)
{
if (m_UAVFlyTrackLayerID_ADS[i] != -1)
{
//m_map.ClearLabels(m_UAVFlyTrackLayerID_ADS[i]);
//m_map.ClearDrawing(m_UAVFlyTrackLayerID_ADS[i]);
m_map.RemoveLayer(m_UAVFlyTrackLayerID_ADS[i]);
m_UAVFlyTrackLayerID_ADS[i] = -1;
}
}
return 0;
}
if (m_iTotalADSnum <= 0)
{
return 0;
}
if (m_iCurrentADSid < (m_iTotalADSnum - 1))
{
m_iCurrentADSid++;
}
else
{
m_iCurrentADSid = 0;
}
static int _ADSidRecord = 0;
_ADSidRecord = m_iCurrentADSid;
//whileѭ<65><D1AD><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1>ij<EFBFBD><C4B3>ADS<44>ɻ<EFBFBD><C9BB><EFBFBD><EFBFBD>״̬ΪҪ<CEAA><D2AA><EFBFBD><E6A3AC><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>
while (m_bWithin100km_ADS[m_iCurrentADSid] == false)
{
//<2F><><EFBFBD>ADS<44>ɻ<EFBFBD><C9BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (m_UAVFlyTrackLayerID_ADS[m_iCurrentADSid] != -1)
{
//m_map.ClearLabels(m_UAVFlyTrackLayerID_ADS[i]);
//m_map.ClearDrawing(m_UAVFlyTrackLayerID_ADS[i]);
m_map.RemoveLayer(m_UAVFlyTrackLayerID_ADS[m_iCurrentADSid]);
m_UAVFlyTrackLayerID_ADS[m_iCurrentADSid] = -1;
}
TRACE("Remove: %d/%d\n", m_iCurrentADSid, _ADSidRecord);
if (m_iCurrentADSid < (m_iTotalADSnum - 1))
{
m_iCurrentADSid++;
}
else
{
m_iCurrentADSid = 0;
}
//<2F><><EFBFBD>ٴ<EFBFBD>ѭ<EFBFBD><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><D1AD>
if (m_iCurrentADSid == _ADSidRecord)
{
TRACE("return");
return 0;
}
}
TRACE("ID: %d/%d\n", m_iCurrentADSid, m_iTotalADSnum);
if (m_UAVFlyTrackLayerID_ADS[m_iCurrentADSid] != -1) //<2F>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><CBBB><EFBFBD>
{
//m_map.ClearLabels(m_UAVFlyTrackLayerID_ADS[i]);
//m_map.ClearDrawing(m_UAVFlyTrackLayerID_ADS[i]);
m_map.RemoveLayer(m_UAVFlyTrackLayerID_ADS[m_iCurrentADSid]);
m_UAVFlyTrackLayerID_ADS[m_iCurrentADSid] = -1;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><CBBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>
CreateEmptyShapfile(m_UAVFlyTrackLayerID_ADS[m_iCurrentADSid], 2, RGB(0,255,0));
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˻<EFBFBD><CBBB><EFBFBD>ͼ<EFBFBD><CDBC>ĵ<EFBFBD><C4B5><EFBFBD><EFBFBD><EFBFBD>
CalculateUAVPolygonCoordinate_ADS(m_dLon_ADS[m_iCurrentADSid], m_dLat_ADS[m_iCurrentADSid], m_dYaw_ADS[m_iCurrentADSid]);
//<2F><><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD>˻<EFBFBD>shp
for (int i=0; i<m_ptNum; i++)
{
AddOnePoint2Shapfile(m_UAVFlyTrackLayerID_ADS[m_iCurrentADSid], 2, m_ppUavPtArray_ADS[i][0], m_ppUavPtArray_ADS[i][1]);
}
//Label<65><6C><EFBFBD><EFBFBD>
CLabels labesPtr;
labesPtr = (m_map.GetShapefile(m_UAVFlyTrackLayerID_ADS[m_iCurrentADSid])).GetLabels();
//<2F><><EFBFBD>ñ<EFBFBD>ע̫<D7A2><CCAB>ʱ<EFBFBD>Ƿ<EFBFBD><C7B7>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>
labesPtr.SetAvoidCollisions(FALSE);
CLabelCategory labelCategory = labesPtr.AddCategory(m_strColor_ADS[m_iCurrentADSid]);
labelCategory.SetFontColor(m_fontColor_ADS[m_iCurrentADSid]);
labelCategory.SetAlignment(1);
//labelCategory.SetFontBold(TRUE);
labelCategory.SetFontName(LPCTSTR("΢<EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD>"));
labelCategory.SetFontSize(8);
//<2F><><EFBFBD><EFBFBD>Labels
labesPtr.AddLabel((LPCTSTR)m_strPlaneName_ADS[m_iCurrentADSid], m_dLon_ADS[m_iCurrentADSid], m_dLat_ADS[m_iCurrentADSid], 0, 0);
//<2F>ػ<EFBFBD>
m_map.Redraw();
}
/*************************************by wu 2023.10.10**********************************************/
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD>ע<EFBFBD><D7A2>Ͷ<EFBFBD><CDB6>
LRESULT CGISDlg::OnDrawKTPoint(WPARAM wParam, LPARAM lParam)
{
//û<>м<EFBFBD><D0BC>ص<EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (!m_bHaveAddMap)
{
return 0;
}
double* lon = (double*) wParam;
double* lat = (double*) lParam;
CString strLon,strLat;
strLon.Format(_T("%.7f"),*lon);
strLat.Format(_T("%.7f"),*lat);
AddPointShapeLayer(m_KTPtShpLayerID, *lon, *lat, (strLon+", "+strLat), _T(""), RGB(255,0,0));
return 0;
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͷ<EFBFBD><CDB6>
LRESULT CGISDlg::OnClearKTPoint(WPARAM wParam, LPARAM lParam)
{
ClearPointShape(m_KTPtShpLayerID);
m_KTPtShpLayerID = -1;
return 0;
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD>ʾ<EFBFBD><CABE>Ͷ<EFBFBD><CDB6><EFBFBD><EFBFBD>
LRESULT CGISDlg::OnShowKTLine(WPARAM wParam, LPARAM lParam)
{
CString path = (char*)wParam;
OnShowGivenLine(path);
return 0;
}
//<2F><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD>ʾ/<2F>رտ<D8B1>Ͷ<EFBFBD><CDB6><EFBFBD><EFBFBD>
LRESULT CGISDlg::OnShowKTLine6(WPARAM wParam, LPARAM lParam)
{
OnShowLine6();
return 0;
}
//<2F><><EFBFBD>ܣ<EFBFBD>װ<EFBFBD><D7B0><EFBFBD><EFBFBD>Ͷ<EFBFBD><CDB6><EFBFBD><EFBFBD>
LRESULT CGISDlg::OnBindKTLine(WPARAM wParam, LPARAM lParam) //<2F><><EFBFBD>͸<EFBFBD><CDB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><D7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2
{
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEB4A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_struMapOut.cmd=MapCmd_BindLine;
m_struMapOut.ID=6;
::SendMessage(GetParent()->GetSafeHwnd(),MESSAGE_B8MAP,(int)(&m_struMapOut),0);
//::PostMessage(m_MsgHwnd,m_LineLoadMsgID,2,0);
return 0;
}
//<2F><><EFBFBD>ܣ<EFBFBD>װ<EFBFBD><D7B0>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>
LRESULT CGISDlg::OnBindEPPoint(WPARAM wParam, LPARAM lParam) //<2F><><EFBFBD>͸<EFBFBD><CDB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><D7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2
{
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEB4A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_struMapOut.cmd=MapCmd_BindLine;
m_struMapOut.ID=15;
::SendMessage(GetParent()->GetSafeHwnd(),MESSAGE_B8MAP,(int)(&m_struMapOut),0);
//::PostMessage(m_MsgHwnd,m_LineLoadMsgID,2,0);
return 0;
}
/* <20><><EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD>ȡ<EFBFBD>з<EFBFBD><D0B7>յĵ<D5B5><C4B5>ε<EFBFBD>
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>alt[in] <20>߶<EFBFBD><DFB6><EFBFBD>ֵ
* vec_alt[out] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>ĸ߶<C4B8>ֵ
vec_lon[out] <20><><EFBFBD><EFBFBD>
vec_lat[out] γ<><CEB3>
*/
void CGISDlg::GetDangerousTerrainPoints(double pts[][2],int pointNum,long alt,vector<double>& vec_alt,vector<double>& vec_lon,vector<double>& vec_lat)
{
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>դ<EFBFBD><D5A4><EFBFBD><EFBFBD>
mapWindow::IGridHeaderPtr gridHeaderPtr = m_mapElevation.m_grid->GetHeader();
int n_gridrow = gridHeaderPtr->NumberRows;
int n_gridcol = gridHeaderPtr->NumberCols;
//<2F><><EFBFBD><EFBFBD>γ<EFBFBD><CEB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊդ<CEAA><D5A4><EFBFBD><EFBFBD><EFBFBD>к<EFBFBD>
vector<int> pts_row,pts_col;
TransformToXY(pts,pointNum,pts_row,pts_col);
//<2F><>դ<EFBFBD><D5A4>
VectorToRaster vectorToRaster;
set<vector<int> > resultSet = vectorToRaster.GetRasterLineEx(pts_row,pts_col,n_gridrow-1,n_gridcol-1,1);
double lat,lon;
//<2F><>ȡΣ<C8A1>յ<EFBFBD>
for (auto it = resultSet.begin();it!=resultSet.end();it++)
{
vector<int> pt = *it;
int altValue = m_mapElevation.m_grid->GetValue(pt.at(1),pt.at(0));
if (altValue>=alt) //Σ<>յ㱣<D5B5><E3B1A3>
{
vec_alt.push_back(altValue);
//ת<><D7AA>Ϊ<EFBFBD><CEAA>γ<EFBFBD><CEB3>
m_mapElevation.m_grid->CellToProj(pt.at(1),pt.at(0),&lon,&lat);
vec_lon.push_back(lon);
vec_lat.push_back(lat);
//int i = 0;
}
}
}
//<2F><><EFBFBD>Σ<EFBFBD>յ<EFBFBD><D5B5>ε<EFBFBD>
int CGISDlg::DrawDangerousTerrainPoints(double pts[][2],int pointNum,long alt)
{
/*
double lon[] = {119.711715,119.738307,119.738553,119.711715};
double lat[] = {32.201856,32.239036,32.178465,32.141285};
double pts[6][2];
long shpPointLayerID = -1;
long shpLineLayerID = -1;
//vector<double> vec_lon,vec_lat;
for(int i=0;i<4;i++)
{
pts[i][0] = lon[i];
pts[i][1] = lat[i];
}
*/
if(!m_mapElevation.m_isAdd)
{
//BCGPMessageBox("δ<><CEB4><EFBFBD>Ӹ߳<D3B8><DFB3><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD>޷<EFBFBD><DEB7>жϵ<D0B6>ǰ<EFBFBD><C7B0><EFBFBD>պ<EFBFBD><D5BA><EFBFBD><EFBFBD>Ƿ<EFBFBD>ȫ!");
return 0;
}
vector<double> vec_alt;
vector<double> vec_lon;
vector<double> vec_lat;
GetDangerousTerrainPoints(pts,pointNum,alt,vec_alt, vec_lon, vec_lat);
if (vec_alt.size()==0)
{
return -1;
}
//<2F>½<EFBFBD><C2BD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ͼ<EFBFBD><CDBC>
if (m_tempTerrainPointsLayerID==-1)
{
m_tempTerrainPointsLayerID = m_map.NewDrawing(1);
}
//m_map.SetShapePointType(m_tempLayerID,0,mapWindow::tkPointType::ptTriangleUp);
m_map.SetShapeLayerPointType(m_tempTerrainPointsLayerID,mapWindow::tkPointType::ptTriangleUp);
CLabels labels = m_map.GetDrawingLabels(m_tempTerrainPointsLayerID);
//labels.SetAutoOffset(true);
labels.SetFontColor(RGB(0,255,0));
labels.SetFontSize(8);
labels.SetFontBold(true);
labels.SetOffsetY(-10);
for (int i=0;i<vec_lon.size();i++)
{
/*
std::stringstream stream;
stream << std::setprecision(2) << vec_alt.at(i);
std::string alt = stream.str();
labels.AddLabel(alt.c_str(),vec_lon.at(i),vec_lat.at(i),0,0);
*/
m_map.DrawPointEx(m_tempTerrainPointsLayerID,vec_lon.at(i),vec_lat.at(i),8,RGB(255,0,0));
//m_map.DrawCircleEx(m_tempLayerID,vec_lon.at(i),vec_lat.at(i),3,RGB(255,0,0),true);
}
m_map.Redraw();
return 1;
}
//<2F><><EFBFBD>Σ<EFBFBD>յ<EFBFBD><D5B5>ε<EFBFBD>
void CGISDlg::ClearDangerousTerrainPoints()
{
if (m_tempTerrainPointsLayerID!=-1)
{
m_map.ClearDrawing(m_tempTerrainPointsLayerID);
m_tempTerrainPointsLayerID = -1;
m_map.Redraw();
}
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
void CGISDlg::DrawTempLine(double m_Pts[][2],int pointNum)
{
//int pointNum = 6;
PtStruct pts[128];
PtStruct linePts[128];
for(int i=0;i<pointNum;i++)
{
pts[i].dX = m_Pts[i][0];
pts[i].dY = m_Pts[i][1];
linePts[i].dX = m_Pts[i][0];
linePts[i].dY = m_Pts[i][1];
}
linePts[pointNum].dX = m_Pts[0][0];
linePts[pointNum].dY = m_Pts[0][1];
//Ŀ<><C4BF><EFBFBD><EFBFBD>SHPͼ<50><CDBC>
if(m_tempshpPointLayerID == -1)
{
CreateEmptyShapfile(m_tempshpPointLayerID,0,LineClr[10]);
}
AddPoints2PointShapfile(m_tempshpPointLayerID,pts,pointNum);
//Ŀ<><C4BF><EFBFBD><EFBFBD>SHPͼ<50><CDBC>
if(m_tempshpLineLayerID == -1)
{
CreateEmptyShapfile(m_tempshpLineLayerID,1,LineClr[10]);
}
AddPoints2LineShapfile(m_tempshpLineLayerID,linePts,pointNum+1);
//Label<65><6C><EFBFBD><EFBFBD>
CLabels labesPtr;
labesPtr = m_map.GetShapefile(m_tempshpLineLayerID).GetLabels();
CLabelCategory labelCategory = labesPtr.AddCategory(_T("<EFBFBD><EFBFBD>ɫ"));
labelCategory.SetFontColor(/*RGB(255,0,0)*/LineClr[10]);
labelCategory.SetAlignment(1);
labelCategory.SetFontBold(TRUE);
labelCategory.SetFontName(LPCTSTR("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"));
labelCategory.SetFontSize(12);
labesPtr.SetAvoidCollisions(FALSE);
CString strText = _T("");
//<2F><><EFBFBD><E6BABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for (long i=0; i<pointNum; i++)
{
//<2F><>ע<EFBFBD><D7A2>Ϣ
//strText.Format(_T("%d-%d"), lineData.lineID, lineData.pts[i].nPt);
strText.Format(_T("%d"), i+1);
//<2F><><EFBFBD><EFBFBD>Labels
labesPtr.AddLabel((LPCTSTR)strText, pts[i].dX, pts[i].dY, 0, 0);
}
m_map.Redraw();
}
//<2F><><EFBFBD><EFBFBD>ѡ<EFBFBD>и<EFBFBD><D0B8><EFBFBD>ͼ<EFBFBD><CDBC>
void CGISDlg::DrawHighLightLine(const PtStruct *pts, const int ptNum)
{
if (m_highLightLineLayerID==-1)
{
//Ŀ<><C4BF><EFBFBD><EFBFBD>SHPͼ<50><CDBC>
mapWindow::IShapefilePtr targetPtShape;
targetPtShape.CreateInstance("MapWinGIS.Shapefile");
targetPtShape->CreateNewWithShapeID(_T(""), mapWindow::SHP_POLYLINE);
//Ŀ<><C4BF><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>
m_highLightLineLayerID = m_map.AddLayer(targetPtShape, true);
mapWindow::IShapeDrawingOptionsPtr pShapeDrawingOption;
pShapeDrawingOption.CreateInstance("MapWinGIS.ShapeDrawingOptions");
pShapeDrawingOption->LineColor = RGB(242,155,41);
pShapeDrawingOption->LineWidth = 2;
(m_map.GetShapefile(m_highLightLineLayerID)).SetDefaultDrawingOptions(pShapeDrawingOption);
}
AddPoints2LineShapfile(m_highLightLineLayerID,pts,ptNum);
m_map.Redraw();
}
//<2F><><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
void CGISDlg::ClearTempLine()
{
if (m_tempshpPointLayerID!=-1)
{
m_map.RemoveLayer(m_tempshpPointLayerID);
m_tempshpPointLayerID = -1;
m_map.GetShapefile(m_tempshpPointLayerID).Close();
}
if(m_tempshpLineLayerID!=-1)
{
m_map.RemoveLayer(m_tempshpLineLayerID);
m_tempshpLineLayerID = -1;
m_map.GetShapefile(m_tempshpLineLayerID).Close();
}
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void CGISDlg::ClearHighLightLine()
{
if (m_highLightLineLayerID!=-1)
{
m_map.RemoveLayer(m_highLightLineLayerID);
m_highLightLineLayerID = -1;
m_map.GetShapefile(m_highLightLineLayerID).Close();
}
}
//ת<><D7AA>ΪGrid<69><64><EFBFBD><EFBFBD>
void CGISDlg::TransformToXY(double pts[][2],int pointNum,vector<int>& ptsRow,vector<int>& ptsCol)
{
mapWindow::IGridHeaderPtr gridHeaderPtr = m_mapElevation.m_grid->GetHeader();
int n_gridrow = gridHeaderPtr->NumberRows;
int n_gridcol = gridHeaderPtr->NumberCols;
long col1[1],col2[1],col3[1],col4[1];
long row1[1],row2[1],row3[1],row4[1];
long col,row;
for (int i=0;i<pointNum;i++)
{
m_mapElevation.m_grid->ProjToCell(pts[i][0],pts[i][1],&col,&row);
ptsRow.push_back(row);
ptsCol.push_back(col);
i;
}
}
//<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
void CGISDlg::TransformToVectorPoints(DrawLineDataStruct lineDataGroup,vector<double>& lineX,vector<double>& lineY)
{
for (int i=0;i<lineDataGroup.linePointNum;i++)
{
lineX.push_back(lineDataGroup.linePts[i].dX);
lineY.push_back(lineDataGroup.linePts[i].dY);
}
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void CGISDlg::AddPointInLine(int ptPos,double* pt,DrawLineDataStruct& editLineDataGroup)
{
// <20>޸<EFBFBD><DEB8>߶ν
int lineNum = editLineDataGroup.linePointNum;
editLineDataGroup.linePointNum = editLineDataGroup.linePointNum + 1;
for (int i=lineNum;i>ptPos;i--) //<2F><><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD><EFBFBD>һλ
{
editLineDataGroup.linePts[i] = editLineDataGroup.linePts[i-1];
editLineDataGroup.linePts[i].nPt = editLineDataGroup.linePts[i].nPt + 1; //<2F>޸ĺ<DEB8><C4BA><EFBFBD><EFBFBD>
}
//<2F>޸IJ<DEB8><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
editLineDataGroup.linePts[ptPos].dX = pt[0];
editLineDataGroup.linePts[ptPos].dY = pt[1];
editLineDataGroup.linePts[ptPos].nPt = ptPos+1; //<2F>޸ĺ<DEB8><C4BA><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD>޶<EFBFBD>β<EFBFBD><EFBFBD><E3BABD><EFBFBD>
editLineDataGroup.linePts[editLineDataGroup.linePointNum-1].nPt = 1;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
editLineDataGroup.linePts[ptPos].nL = editLineDataGroup.lineID;
editLineDataGroup.linePts[ptPos].nH = editLineDataGroup.linePts[ptPos-1].nH;
//<2F>޸ĵ㼯<C4B5>
int ptNum = editLineDataGroup.pointNum;
editLineDataGroup.pointNum = editLineDataGroup.pointNum + 1;
for (int j=ptNum;j>ptPos;j--) //<2F>ƶ<EFBFBD><C6B6><EFBFBD><E3BCAF><EFBFBD><EFBFBD>
{
editLineDataGroup.pts[j] = editLineDataGroup.pts[j-1];
editLineDataGroup.pts[j].nPt = editLineDataGroup.pts[j].nPt + 1; //<2F>޸ĺ<DEB8><C4BA><EFBFBD><EFBFBD>
}
//<2F>޸IJ<DEB8><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
editLineDataGroup.pts[ptPos].dX = pt[0];
editLineDataGroup.pts[ptPos].dY = pt[1];
editLineDataGroup.pts[ptPos].nPt = ptPos + 1; //<2F>޸ĺ<DEB8><C4BA><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
editLineDataGroup.pts[ptPos].nL = editLineDataGroup.lineID;
editLineDataGroup.pts[ptPos].nH = editLineDataGroup.pts[ptPos-1].nH;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD>
bool CGISDlg::RemovePointInLine(int ptPos,DrawLineDataStruct& backLineDataGroup)
{
if (backLineDataGroup.pointNum<=2) //ֱ<>߲<EFBFBD><DFB2><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD>ڵ<EFBFBD>
{
return false;
}
// <20>޸<EFBFBD><DEB8>߶ν
int lineNum = backLineDataGroup.linePointNum;
backLineDataGroup.linePointNum = backLineDataGroup.linePointNum - 1;
for (int i=ptPos;i<lineNum-2;i++) //<2F>ƶ<EFBFBD><C6B6>߶<EFBFBD><DFB6><EFBFBD><EFBFBD><EFBFBD>
{
backLineDataGroup.linePts[i] = backLineDataGroup.linePts[i+1];
backLineDataGroup.linePts[i].nPt = backLineDataGroup.linePts[i].nPt -1; //<2F>޸ĺ<DEB8><C4BA><EFBFBD><EFBFBD>
}
if (backLineDataGroup.linePointNum==3) //<2F><><EFBFBD>ֱ<EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>β<EFBFBD><CEB2>
{
backLineDataGroup.linePointNum = 2;
}
else //<2F><>β<EFBFBD><CEB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
if (backLineDataGroup.pts[lineNum-2].ch1!=2) //<2F>պϺ<D5BA><CFBA><EFBFBD>
{
backLineDataGroup.linePts[backLineDataGroup.linePointNum-1] = backLineDataGroup.linePts[0];
}
}
//<2F>޸ĵ㼯<C4B5>
int ptNum = backLineDataGroup.pointNum;
backLineDataGroup.pointNum = backLineDataGroup.pointNum - 1;
for (int j=ptPos;j<ptNum-1;j++) //<2F>ƶ<EFBFBD><C6B6><EFBFBD><E3BCAF><EFBFBD><EFBFBD>
{
backLineDataGroup.pts[j] = backLineDataGroup.pts[j+1];
backLineDataGroup.pts[j].nPt = backLineDataGroup.pts[j].nPt - 1; //<2F>޸ĺ<DEB8><C4BA><EFBFBD><EFBFBD>
}
return true;
}
// <20>Ƿ<EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>,<2C><>ѡ<EFBFBD>з<EFBFBD><D0B7>غ<EFBFBD><D8BA>߱<EFBFBD>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD>򷵻<EFBFBD>-1
int CGISDlg::IsSelectLine(double* pt)
{
if (m_ShowedLineDataList.size()==0)
{
return false;
}
for(auto i=m_ShowedLineDataList.begin();i!=m_ShowedLineDataList.end();i++)
{
//cout<<"<22><>="<<i->first<<" ֵ="<<i->second<<endl;
std::vector<double> lineX,lineY;
DrawLineDataStruct lineData = i->second;
TransformToVectorPoints(lineData,lineX,lineY);
if(topologicalAnalysis.isPointInPolyLine(pt,lineX,lineY))
{
return lineData.lineID;
};
}
return -1;
}
/**************************************************************************************************/
//<2F><EFBFBD><E0BCAD><EFBFBD><EFBFBD>ʱ,<2C><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>öԻ<C3B6><D4BB><EFBFBD>
void CGISDlg::ShowModifyPointDlg(int selectedPointID)
{
if (!m_bEditLine)
{
return;
}
CModifyLinePointDlg dlg;
dlg.m_editLineDataGroup = m_editLineDataGroup;
dlg.SetSelectedPointID(selectedPointID);
if (m_lineSelectedID!=11) //<2F>ǻ<EFBFBD><C7BB>պ<EFBFBD><D5BA>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
dlg.SetCirclingPointRBTNVisible(false);
}
dlg.SetLonLat(m_editLineDataGroup.pts[selectedPointID].dX,m_editLineDataGroup.pts[selectedPointID].dY);
if (circlingPointID == selectedPointID) //ѡ<><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E3A3AC><EFBFBD>ð<EFBFBD>ťѡ<C5A5><D1A1>
{
dlg.CheckedCirclingPoint();
}
if (dlg.DoModal() == IDOK)
{
double targetLat,targetLon;
int pointID;
dlg.GetLonLat(targetLon,targetLat,pointID);
//bool bb = dlg.IsCirclingPoint();
if (m_lineSelectedID==11) //<2F><><EFBFBD>պ<EFBFBD><D5BA><EFBFBD>
{
if (circlingPointID == selectedPointID) //<2F><><EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
if (!dlg.IsCirclingPoint()) //<2F><EFBFBD><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
circlingPointID = -1;
}
}
if (dlg.IsCirclingPoint()) //<2F><EFBFBD><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
circlingPointID = selectedPointID;
}
}
//<2F>޸ĵ<DEB8><C4B5><EFBFBD><EFBFBD><EFBFBD>
m_editLineDataGroup.pts[pointID-1].dX = targetLon;
m_editLineDataGroup.pts[pointID-1].dY = targetLat;
//<2F>޸<EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_editLineDataGroup.linePts[pointID-1].dX = targetLon;
m_editLineDataGroup.linePts[pointID-1].dY = targetLat;
if(pointID==m_editLineDataGroup.linePointNum-1 && m_editLineDataGroup.linePts[m_editLineDataGroup.linePointNum-1].ch1==2){
// <20><><EFBFBD><EFBFBD>޸ĵ<DEB8><C4B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>պϺ<D5BA><CFBA><EFBFBD>
m_editLineDataGroup.linePts[pointID].dX = targetLon;
m_editLineDataGroup.linePts[pointID].dY = targetLat;
}
if (pointID==1 && m_editLineDataGroup.linePts[m_editLineDataGroup.linePointNum-1].ch1==0)
{ // <20><><EFBFBD><EFBFBD>޸ĵ<DEB8><C4B5><EFBFBD><EFBFBD>׸<EFBFBD><D7B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>պϺ<D5BA><CFBA><EFBFBD>
m_editLineDataGroup.linePts[m_editLineDataGroup.linePointNum-1].dX = targetLon;
m_editLineDataGroup.linePts[m_editLineDataGroup.linePointNum-1].dY = targetLat;
} //m_editLineDataGroup.linePts[0]->ch1==2 <20><><EFBFBD>պ<EFBFBD> 0-><3E>պ<EFBFBD>
if (m_distLabelLayer!=-1)
{
m_map.ClearDrawing(m_distLabelLayer);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>λ<EFBFBD>DZ<EFBFBD><C7B1>
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĺ<EFBFBD><C4BA><EFBFBD>
ClearDrawedLine(m_editLineDataGroup.lineID-1);
//<2F><><EFBFBD><E6BABD>
DrawFlyLine(m_editLineDataGroup);
}
else
{
//return;
}
return;
}
void CGISDlg::ShowModifyPointDlg()
{
ShowModifyPointDlg(0);
}
//<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>Ի<EFBFBD><D4BB><EFBFBD>
void CGISDlg::ShowEditSaveDlg()
{
if (!m_bEditLine)
{
return;
}
CSaveLineEditSetting saveDlg;
saveDlg.DoModal();
int saveStatus = saveDlg.GetSaveStatus(); //-1Ϊ<31><CEAA><EFBFBD><EFBFBD><EFBFBD>棬0Ϊ<30><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0BCAD><31><CEAA><EFBFBD><EFBFBD>
if (saveStatus==-1)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĺ<EFBFBD><C4BA><EFBFBD>
ClearDrawedLine(m_editLineDataGroup.lineID-1);
//<2F>ָ<EFBFBD>δ<EFBFBD>༭״̬
DrawFlyLine(m_ShowedLineDataList[m_lineSelectedID]);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_map.ClearDrawing(m_distLabelLayer);
m_bEditLine = false;
m_bSelectFeatureFlag = false;
m_lineSelectedID = -1;
return;
}
else if (saveStatus==0)
{
return;
}
//
CString dirName = "";
switch (m_lineSelectedID)
{
case 1:
dirName = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>1\\";
break;
case 2:
dirName = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>2\\";
break;
case 3:
dirName = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>3\\";
break;
case 4:
dirName = "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>к<EFBFBD><EFBFBD><EFBFBD>\\";
break;
case 5:
dirName = "Χ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\\";
break;
case 6:
dirName = "<EFBFBD><EFBFBD>Ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>\\";
break;
case 10:
dirName = "<EFBFBD>ܵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\\";
break;
case 11:
dirName = "<EFBFBD><EFBFBD><EFBFBD>պ<EFBFBD><EFBFBD><EFBFBD>\\";
break;
case 13:
dirName = "ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\\";
break;
}
//<2F><><EFBFBD>±<EFBFBD><C2B1><EFBFBD><EFBFBD><EFBFBD>պ<EFBFBD><D5BA><EFBFBD>
CString filename;
CString strRouteFileDir = GetSoftwareCurrentDirectory() + _T("\\Route\\") + dirName;
TCHAR s[10000];
s[0]=0;
CFileDialog dlg(FALSE, _T(".txt"), _T("*.txt"));
dlg.m_ofn.lpstrTitle=_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>");
dlg.m_ofn.lpstrFile=s;
dlg.m_ofn.nMaxFile=sizeof(s)/sizeof(TCHAR);
TCHAR filter[500]=_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>(*.txt)\0*.txt\0");
dlg.m_ofn.lpstrFilter=filter;
dlg.m_ofn.Flags|=OFN_OVERWRITEPROMPT|OFN_HIDEREADONLY|OFN_CREATEPROMPT;
dlg.m_ofn.lpstrInitialDir = strRouteFileDir;
if (IDOK == dlg.DoModal())
{
filename = dlg.GetPathName();
//<2F><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
FILE* fp = fopen(filename,"w");
fprintf(fp,"%d, 0, %lf, %lf, %.2lf, 0, 00, 03\n", m_editLineDataGroup.lineID, 0.0, 0.0, 0.0);
int n_linePts = m_editLineDataGroup.pointNum;
for (int i=1;i<=n_linePts;i++)
{
PtStruct linePt = m_editLineDataGroup.pts[i-1];
if (i<n_linePts-1)
{
if (circlingPointID==i-1) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
fprintf(fp,"%d, %d, %lf, %lf, %.2lf, 0, 01, 03\n", m_editLineDataGroup.lineID, i, linePt.dX, linePt.dY,linePt.nH);
}
else
{
fprintf(fp,"%d, %d, %lf, %lf, %.2lf, 0, 00, 03\n", m_editLineDataGroup.lineID, i, linePt.dX, linePt.dY,linePt.nH);
}
}
else if (i==n_linePts-1)
{
if (m_lineSelectedID==11) //<2F><><EFBFBD>պ<EFBFBD><D5BA><EFBFBD>
{
fprintf(fp,"%d, %d, %lf, %lf, %.2lf, 0, 00, 07\n", m_editLineDataGroup.lineID,i,linePt.dX,linePt.dY,linePt.nH);
}
else
{
fprintf(fp,"%d, %d, %lf, %lf, %.2lf, 0, 00, 03\n", m_editLineDataGroup.lineID,i,linePt.dX,linePt.dY,linePt.nH);
}
}
else if (i==n_linePts)
{
if (m_lineSelectedID==11) //<2F><><EFBFBD>պ<EFBFBD><D5BA><EFBFBD>
{
fprintf(fp,"%d, %d, %lf, %lf, %.2lf, 0, 00, 0B\n", m_editLineDataGroup.lineID,i,linePt.dX,linePt.dY,linePt.nH);
}
else
{
if (linePt.ch1==2) //<2F><><EFBFBD>Ϻ<EFBFBD><CFBA><EFBFBD>
{
fprintf(fp,"%d, %d, %lf, %lf, %.2lf, 0, 02, 01\n", m_editLineDataGroup.lineID,i,linePt.dX,linePt.dY,linePt.nH);
}
else
{
fprintf(fp,"%d, %d, %lf, %lf, %.2lf, 0, 00, 01\n", m_editLineDataGroup.lineID,i,linePt.dX,linePt.dY,linePt.nH);
}
}
}
}
fclose(fp);
OnShowGivenLine(filename);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĺ<EFBFBD><C4BA><EFBFBD>
//ClearDrawedLine(m_editLineDataGroup.lineID-1);
//<2F><><EFBFBD><E6BABD>
//DrawFlyLine(m_editLineDataGroup);
m_map.ClearDrawing(m_distLabelLayer);
m_bEditLine = false;
m_bSelectFeatureFlag = false;
m_lineSelectedID = -1;
return;
}else
{
return;
}
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void CGISDlg::EndPolylineMessure()
{
//ɾ<><C9BE><EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1>
m_map.ClearDrawing(m_tempLayerID);
m_bMeasureDrag = false;
m_bEndMeasure = true;
m_numPolylineMeasurePts = 0;
return;
}