|
|
|
@ -20,6 +20,8 @@
|
|
|
|
|
#include "vectortoraster.h"
|
|
|
|
|
#include "SaveLineEditSetting.h"
|
|
|
|
|
#include "ModifyLinePointDlg.h"
|
|
|
|
|
#include <OleAuto.h>
|
|
|
|
|
#include <Windows.h>
|
|
|
|
|
|
|
|
|
|
#ifdef _DEBUG
|
|
|
|
|
#define new DEBUG_NEW
|
|
|
|
@ -182,6 +184,14 @@ CGISDlg::CGISDlg(CWnd* pParent /*=NULL*/)
|
|
|
|
|
memset(m_pDesignLineStruct, 0, sizeof(PtStruct)*m_lineMaxPointNum); //初始化
|
|
|
|
|
m_designLinePointNum = 0; //当前航点个数
|
|
|
|
|
|
|
|
|
|
/*******************************新增限制区********************************/
|
|
|
|
|
//绘制禁飞区、限飞区
|
|
|
|
|
std::fill(noFlyZoneLayersID, noFlyZoneLayersID + 5, -1);//禁飞区
|
|
|
|
|
std::fill(restrictedZoneLayersID, restrictedZoneLayersID + 5, -1);//限飞区
|
|
|
|
|
bDrawRestrictedZone = false;
|
|
|
|
|
bShowZone = false;
|
|
|
|
|
m_tempZoneLayerID = -1;
|
|
|
|
|
/**********************************************************************************/
|
|
|
|
|
//航线标绘图层ID初始化
|
|
|
|
|
m_designLineLayerID = -1;
|
|
|
|
|
m_designLineLayerID2 = -1;
|
|
|
|
@ -581,6 +591,24 @@ BEGIN_MESSAGE_MAP(CGISDlg, CBCGPDialog)
|
|
|
|
|
//空投航线
|
|
|
|
|
ON_COMMAND(IDM_SHOW_LINE14, &CGISDlg::OnShowLine14)
|
|
|
|
|
ON_UPDATE_COMMAND_UI(IDM_SHOW_LINE14, &CGISDlg::OnUpdateShowLine14)
|
|
|
|
|
/****************************限制区************************************/
|
|
|
|
|
ON_COMMAND(IDM_DESIGN_ZONE,OnDesignZone)
|
|
|
|
|
ON_COMMAND(IDM_IMPORT_ZONE,OnImportZone)
|
|
|
|
|
ON_COMMAND(IDM_SHOW_RESTRICTEDZONE1,OnShowRestrictedZone1)
|
|
|
|
|
ON_COMMAND(IDM_SHOW_RESTRICTEDZONE2,OnShowRestrictedZone2)
|
|
|
|
|
ON_COMMAND(IDM_SHOW_RESTRICTEDZONE3,OnShowRestrictedZone3)
|
|
|
|
|
ON_COMMAND(IDM_SHOW_RESTRICTEDZONE4,OnShowRestrictedZone4)
|
|
|
|
|
ON_COMMAND(IDM_SHOW_RESTRICTEDZONE5,OnShowRestrictedZone5)
|
|
|
|
|
|
|
|
|
|
ON_COMMAND(IDM_SHOW_NOFLYZONE1,OnShowNoFlyZone1)
|
|
|
|
|
ON_COMMAND(IDM_SHOW_NOFLYZONE2,OnShowNoFlyZone2)
|
|
|
|
|
ON_COMMAND(IDM_SHOW_NOFLYZONE3,OnShowNoFlyZone3)
|
|
|
|
|
ON_COMMAND(IDM_SHOW_NOFLYZONE4,OnShowNoFlyZone4)
|
|
|
|
|
ON_COMMAND(IDM_SHOW_NOFLYZONE5,OnShowNoFlyZone5)
|
|
|
|
|
|
|
|
|
|
ON_COMMAND(IDM_BIND_ZONE,OnBindZone)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
END_MESSAGE_MAP()
|
|
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
@ -661,6 +689,7 @@ BOOL CGISDlg::OnInitDialog()
|
|
|
|
|
|
|
|
|
|
m_DlgDemAlt.Create(IDD_DIALOG_DEMALT,this);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//多媒体定时器
|
|
|
|
|
timeBeginPeriod(0);
|
|
|
|
|
TimerID_Draw = timeSetEvent(500, 1, (LPTIMECALLBACK)CatchMTimerDraw, (DWORD)NULL, TIME_PERIODIC);
|
|
|
|
@ -1286,28 +1315,14 @@ void CGISDlg::OnShowRMenu()
|
|
|
|
|
//显示快捷菜单
|
|
|
|
|
CMenu menu;
|
|
|
|
|
|
|
|
|
|
//CMenu* pMenu = GetMenu();
|
|
|
|
|
//if (pMenu != NULL)
|
|
|
|
|
//{
|
|
|
|
|
/*
|
|
|
|
|
CMenu* pSubMenu = menu.GetSubMenu(0);
|
|
|
|
|
if (pSubMenu != NULL)
|
|
|
|
|
{
|
|
|
|
|
CMenu* pSubMenu2 = pSubMenu->GetSubMenu(0);
|
|
|
|
|
if (pSubMenu2 != NULL)
|
|
|
|
|
{
|
|
|
|
|
pSubMenu2->DeleteMenu(IDM_SHOW_LINE14, MF_BYCOMMAND);
|
|
|
|
|
}
|
|
|
|
|
}*/
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
POINT pt;
|
|
|
|
|
GetCursorPos( &pt );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//当处于回放模式时,设置、导引操作、航线装订子菜单都先灰色
|
|
|
|
|
menu.LoadMenu(IDR_MENU2);
|
|
|
|
|
//设置限制区勾选状态
|
|
|
|
|
SetMenuZoneCheck(menu);
|
|
|
|
|
|
|
|
|
|
//航线1
|
|
|
|
|
if (m_pHaveDrawLineFlag[0])
|
|
|
|
@ -1895,6 +1910,36 @@ void CGISDlg::MouseDownMap1(short Button, short Shift, long x, long y)
|
|
|
|
|
//设置点的经度、纬度
|
|
|
|
|
m_pHZDistanceDlg->SetPtCoordinate(dX, dY);
|
|
|
|
|
}
|
|
|
|
|
/************************************限飞区*************************************/
|
|
|
|
|
if(bDrawRestrictedZone && (Button == 1))
|
|
|
|
|
{
|
|
|
|
|
//像素坐标转换地理坐标
|
|
|
|
|
m_map.PixelToProj(x,y, &dX, &dY);
|
|
|
|
|
if (!bShowZone)
|
|
|
|
|
{
|
|
|
|
|
firstZonePoint[0] = dX;
|
|
|
|
|
firstZonePoint[1] = dY;
|
|
|
|
|
bShowZone = true;
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if(bShowZone)
|
|
|
|
|
{
|
|
|
|
|
double xPoints[5];
|
|
|
|
|
double yPoints[5];
|
|
|
|
|
double endPoint[2] = {dX,dY};
|
|
|
|
|
ComputeRectanglePoints(firstZonePoint,endPoint,xPoints,yPoints);
|
|
|
|
|
DrawRestrictedZone(m_tempZoneLayerID,xPoints,yPoints,5,0);
|
|
|
|
|
|
|
|
|
|
m_map.Redraw();
|
|
|
|
|
bShowZone = false;
|
|
|
|
|
bDrawRestrictedZone = false;
|
|
|
|
|
|
|
|
|
|
ShowSaveZoneDlg(xPoints,yPoints);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/***************************************多点测距 by Wu 2023.10.16*****************************************/
|
|
|
|
|
if (m_bPolylineMeasure && (Button == 1))
|
|
|
|
@ -2629,6 +2674,21 @@ void CGISDlg::MouseMoveMap1(short Button, short Shift, long x, long y)
|
|
|
|
|
m_pLonLatDlg->SetLonLatInfo(dX, dY);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//实时绘制限飞区
|
|
|
|
|
if (bShowZone)
|
|
|
|
|
{
|
|
|
|
|
double dX = 0;
|
|
|
|
|
double dY = 0;
|
|
|
|
|
m_map.PixelToProj(x,y, &dX, &dY);
|
|
|
|
|
|
|
|
|
|
double xPoints[5];
|
|
|
|
|
double yPoints[5];
|
|
|
|
|
double endPoint[2] = {dX,dY};
|
|
|
|
|
ComputeRectanglePoints(firstZonePoint,endPoint,xPoints,yPoints);
|
|
|
|
|
DrawRestrictedZone(noFlyZoneLayersID[0],xPoints,yPoints,5,1);
|
|
|
|
|
m_map.Redraw();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*****************************************by Wu 2023.09.14*******************************************/
|
|
|
|
|
//编辑航线时
|
|
|
|
@ -4871,6 +4931,33 @@ void CGISDlg::OnShowGivenLine(const CString strLineFileName)
|
|
|
|
|
BCGPMessageBox("航线号不正确!");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int ch = lineDataGroup.linePts[lineDataGroup.pointNum-1].ch1;
|
|
|
|
|
if (ch==0x0C) //限飞区
|
|
|
|
|
{
|
|
|
|
|
//ClearZoneLayer(restrictedZoneLayersID[lineDataGroup.lineID-1]);
|
|
|
|
|
double xPoints[5];
|
|
|
|
|
double yPoints[5];
|
|
|
|
|
for (int i = 0;i<5;++i)
|
|
|
|
|
{
|
|
|
|
|
xPoints[i] = lineDataGroup.linePts[i].dX;
|
|
|
|
|
yPoints[i] = lineDataGroup.linePts[i].dY;
|
|
|
|
|
}
|
|
|
|
|
DrawRestrictedZone(restrictedZoneLayersID[lineDataGroup.lineID-1],xPoints,yPoints,5,0);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
else if(ch == 0x0D) //禁飞区
|
|
|
|
|
{
|
|
|
|
|
double xPoints[5];
|
|
|
|
|
double yPoints[5];
|
|
|
|
|
for (int i = 0;i<5;++i)
|
|
|
|
|
{
|
|
|
|
|
xPoints[i] = lineDataGroup.linePts[i].dX;
|
|
|
|
|
yPoints[i] = lineDataGroup.linePts[i].dY;
|
|
|
|
|
}
|
|
|
|
|
DrawRestrictedZone(noFlyZoneLayersID[lineDataGroup.lineID-1],xPoints,yPoints,5,1);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
/*******************by Wu 2023.09.14****************************/
|
|
|
|
|
m_ShowedLineDataList[lineDataGroup.lineID] = lineDataGroup;
|
|
|
|
|
|
|
|
|
@ -7583,6 +7670,383 @@ void CGISDlg::EndPolylineMessure()
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//显示保存限飞区对话框
|
|
|
|
|
void CGISDlg::ShowSaveZoneDlg(double* xPoints,double* yPoints)
|
|
|
|
|
{
|
|
|
|
|
CSaveZoneDlg saveZoneDlg;
|
|
|
|
|
if (IDOK == saveZoneDlg.DoModal())
|
|
|
|
|
{
|
|
|
|
|
int zoneType = saveZoneDlg.GetZoneType();
|
|
|
|
|
int zoneID = saveZoneDlg.GetZoneID();
|
|
|
|
|
double height = 0.0;
|
|
|
|
|
CString str;
|
|
|
|
|
|
|
|
|
|
CString dirName = "";
|
|
|
|
|
if (zoneType == 0)//限飞区
|
|
|
|
|
{
|
|
|
|
|
//CreateDirectory("限飞区");
|
|
|
|
|
dirName = _T("限飞区\\");
|
|
|
|
|
height = saveZoneDlg.GetHeight();
|
|
|
|
|
}
|
|
|
|
|
else if(zoneType == 1)
|
|
|
|
|
{
|
|
|
|
|
//CreateDirectory("禁飞区");
|
|
|
|
|
dirName = _T("禁飞区\\");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//重新保存回收航线
|
|
|
|
|
CString filename;
|
|
|
|
|
CString strRouteFileDir = GetSoftwareCurrentDirectory() + _T("\\Route\\") + dirName ;
|
|
|
|
|
|
|
|
|
|
CreateDirectory(strRouteFileDir);
|
|
|
|
|
|
|
|
|
|
TCHAR s[10000];
|
|
|
|
|
s[0]=0;
|
|
|
|
|
CFileDialog dlg(FALSE, _T(".txt"), _T("*.txt"));
|
|
|
|
|
dlg.m_ofn.lpstrTitle=_T("保存文件");
|
|
|
|
|
dlg.m_ofn.lpstrFile=s;
|
|
|
|
|
dlg.m_ofn.nMaxFile=sizeof(s)/sizeof(TCHAR);
|
|
|
|
|
|
|
|
|
|
TCHAR filter[500]=_T("航线文件(*.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();
|
|
|
|
|
//保存文件
|
|
|
|
|
FILE* fp = fopen(filename,"w");
|
|
|
|
|
fprintf(fp,"%d, 0, %lf, %lf, %.2lf, 0, 00, 03\n", zoneID, 0.0, 0.0, 0.0);
|
|
|
|
|
fprintf(fp,"%d, 1, %lf, %lf, %.2lf, 0, 00, 03\n", zoneID, xPoints[0], yPoints[0], height);
|
|
|
|
|
fprintf(fp,"%d, 2, %lf, %lf, %.2lf, 0, 00, 03\n", zoneID, xPoints[1], yPoints[1], height);
|
|
|
|
|
fprintf(fp,"%d, 3, %lf, %lf, %.2lf, 0, 00, 03\n", zoneID, xPoints[2], yPoints[2], height);
|
|
|
|
|
if (zoneType==0)
|
|
|
|
|
{
|
|
|
|
|
fprintf(fp,"%d, 4, %lf, %lf, %.2lf, 0, 0C, 01\n", zoneID, xPoints[3], yPoints[3], height);
|
|
|
|
|
}
|
|
|
|
|
else if (zoneType==1)
|
|
|
|
|
{
|
|
|
|
|
fprintf(fp,"%d, 4, %lf, %lf, %.2lf, 0, 0D, 01\n", zoneID, xPoints[3], yPoints[3], height);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fclose(fp);
|
|
|
|
|
}
|
|
|
|
|
//显示区域
|
|
|
|
|
OnShowGivenLine(filename);
|
|
|
|
|
}
|
|
|
|
|
m_map.RemoveLayer(m_tempZoneLayerID);
|
|
|
|
|
m_map.Redraw();
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*根据对角线两点坐标计算矩形的顶点
|
|
|
|
|
*point1:起点坐标
|
|
|
|
|
*point2:对角线另一点坐标
|
|
|
|
|
*xPoints:矩形顶点的x坐标
|
|
|
|
|
*yPoints:矩形顶点的y坐标
|
|
|
|
|
*/
|
|
|
|
|
void CGISDlg::ComputeRectanglePoints(double* point1,double* point2,double* xPoints,double* yPoints)
|
|
|
|
|
{
|
|
|
|
|
if((point1[0]<point2[0] && point1[1]>point2[1]) || (point1[0]>point1[1] && point1[1]<point2[1]))
|
|
|
|
|
{
|
|
|
|
|
xPoints[0] = point1[0];
|
|
|
|
|
xPoints[1] = point2[0];
|
|
|
|
|
xPoints[2] = point2[0];
|
|
|
|
|
xPoints[3] = point1[0];
|
|
|
|
|
xPoints[4] = point1[0];
|
|
|
|
|
|
|
|
|
|
yPoints[0] = point1[1];
|
|
|
|
|
yPoints[1] = point1[1];
|
|
|
|
|
yPoints[2] = point2[1];
|
|
|
|
|
yPoints[3] = point2[1];
|
|
|
|
|
yPoints[4] = point1[1];
|
|
|
|
|
}
|
|
|
|
|
if ((point1[0]<point2[0] && point1[1]<point2[1]) || (point1[0]>point2[0] && point1[1]>point2[1]))
|
|
|
|
|
{
|
|
|
|
|
xPoints[0] = point1[0];
|
|
|
|
|
xPoints[1] = point1[0];
|
|
|
|
|
xPoints[2] = point2[0];
|
|
|
|
|
xPoints[3] = point2[0];
|
|
|
|
|
xPoints[4] = point1[0];
|
|
|
|
|
|
|
|
|
|
yPoints[0] = point1[1];
|
|
|
|
|
yPoints[1] = point2[1];
|
|
|
|
|
yPoints[2] = point2[1];
|
|
|
|
|
yPoints[3] = point1[1];
|
|
|
|
|
yPoints[4] = point1[1];
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
//绘制限飞区
|
|
|
|
|
void CGISDlg::DrawRestrictedZone(long& layerID,double* xPoints,double* yPoints,int nPoints,int type)
|
|
|
|
|
{
|
|
|
|
|
if (layerID>=0)
|
|
|
|
|
{
|
|
|
|
|
m_map.RemoveLayer(layerID);
|
|
|
|
|
layerID = -1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
mapWindow::IShapePtr shapePtr;
|
|
|
|
|
shapePtr.CreateInstance("MapWinGIS.Shape");
|
|
|
|
|
//创建面矢量shapfile
|
|
|
|
|
shapePtr->Create(mapWindow::SHP_POLYGON);
|
|
|
|
|
CreateEmptyShapfile(layerID,2,RGB(255,0,0));
|
|
|
|
|
for (long i=0; i<nPoints; i++)
|
|
|
|
|
{
|
|
|
|
|
mapWindow::IPointPtr pintPtr;
|
|
|
|
|
pintPtr.CreateInstance("MapWinGIS.Point");
|
|
|
|
|
|
|
|
|
|
//经度
|
|
|
|
|
pintPtr->x = xPoints[i];
|
|
|
|
|
//纬度
|
|
|
|
|
pintPtr->y = yPoints[i];
|
|
|
|
|
shapePtr->InsertPoint(pintPtr, &i);
|
|
|
|
|
|
|
|
|
|
//插入面矢量
|
|
|
|
|
(m_map.GetShapefile(layerID)).EditInsertShape(shapePtr, &i);
|
|
|
|
|
}
|
|
|
|
|
mapWindow::IShapeDrawingOptionsPtr pShapeDrawingOption;
|
|
|
|
|
pShapeDrawingOption.CreateInstance("MapWinGIS.ShapeDrawingOptions");
|
|
|
|
|
if(type == 0){//限飞区黄色
|
|
|
|
|
pShapeDrawingOption->LineColor = RGB(250,173,20);
|
|
|
|
|
pShapeDrawingOption->FillColor = RGB(254,252,233);//RGB(244,206,199);
|
|
|
|
|
}else if(type==1){ //禁飞区红色
|
|
|
|
|
pShapeDrawingOption->LineColor = RGB(220,38,38);
|
|
|
|
|
pShapeDrawingOption->FillColor = RGB(254,243,243);//RGB(244,206,199);
|
|
|
|
|
}
|
|
|
|
|
pShapeDrawingOption->LineWidth = 2;
|
|
|
|
|
pShapeDrawingOption->FillTransparency = 180; //透明度
|
|
|
|
|
(m_map.GetShapefile(layerID)).SetDefaultDrawingOptions(pShapeDrawingOption);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
//清除限飞区
|
|
|
|
|
void CGISDlg::ClearZoneLayer(long& zoneID)
|
|
|
|
|
{
|
|
|
|
|
if (zoneID>=0)
|
|
|
|
|
{
|
|
|
|
|
m_map.RemoveLayer(zoneID);
|
|
|
|
|
zoneID = -1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CGISDlg::arrayDouble2Variant(double *pArray,int iDimlength,VARIANT &vaArray)
|
|
|
|
|
{
|
|
|
|
|
SAFEARRAY *psa;
|
|
|
|
|
SAFEARRAYBOUND rgsabound[1];
|
|
|
|
|
rgsabound[0].lLbound=0;
|
|
|
|
|
rgsabound[0].cElements=iDimlength;
|
|
|
|
|
psa = SafeArrayCreate(VT_R8,1,rgsabound);
|
|
|
|
|
long lIndex[1];
|
|
|
|
|
for (int k=0; k < iDimlength; k++)
|
|
|
|
|
{
|
|
|
|
|
lIndex[0]=k;
|
|
|
|
|
SafeArrayPutElement(psa,lIndex,&pArray[k]);
|
|
|
|
|
}
|
|
|
|
|
vaArray.vt = VT_ARRAY|VT_R8;
|
|
|
|
|
vaArray.parray= psa;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**************************************************************************************************/
|
|
|
|
|
//设计限制区
|
|
|
|
|
void CGISDlg::OnDesignZone(){
|
|
|
|
|
m_map.SetCursorMode(mapWindow::cmNone);
|
|
|
|
|
bDrawRestrictedZone = true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CGISDlg::OnImportZone(){
|
|
|
|
|
//未加载地图,返回
|
|
|
|
|
if (!m_bHaveAddMap)
|
|
|
|
|
{
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//弹出文件对话框
|
|
|
|
|
CFileDialog dlg(true, ".txt","*.txt",OFN_HIDEREADONLY, "限制区文件(*.txt)|*.txt|", NULL);
|
|
|
|
|
|
|
|
|
|
if (dlg.DoModal() == IDOK)
|
|
|
|
|
{
|
|
|
|
|
//读取航路文件,并标绘出来
|
|
|
|
|
OnShowGivenLine(dlg.GetPathName());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CGISDlg::SetZoneState(long& zoneLayerID)
|
|
|
|
|
{
|
|
|
|
|
//已经标绘,清除航线
|
|
|
|
|
if (zoneLayerID>=0 )
|
|
|
|
|
{
|
|
|
|
|
//清除标绘的航线
|
|
|
|
|
ClearZoneLayer(zoneLayerID);
|
|
|
|
|
//刷新
|
|
|
|
|
m_map.Redraw();
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
TCHAR filter[500]=_T("限制区文件(*.txt)\0*.txt\0)");
|
|
|
|
|
|
|
|
|
|
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 = "选择显示最新生成的限制区";
|
|
|
|
|
if (LineRouteDlg.DoModal() == IDOK) //用户单击OK按钮中止对话框的返回值
|
|
|
|
|
{
|
|
|
|
|
CString str = LineRouteDlg.GetPathName(); //获取文件路径名
|
|
|
|
|
//OnShowGivenLine(GetFlyLineName(lineID));
|
|
|
|
|
OnShowGivenLine(str);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CGISDlg::SetMenuZoneCheck(CMenu& menu){
|
|
|
|
|
if (restrictedZoneLayersID[0]>=0)
|
|
|
|
|
{
|
|
|
|
|
menu.CheckMenuItem( IDM_SHOW_RESTRICTEDZONE1, MF_BYCOMMAND | MF_CHECKED );
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
menu.CheckMenuItem( IDM_SHOW_RESTRICTEDZONE1, MF_BYCOMMAND | MF_UNCHECKED );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (restrictedZoneLayersID[1]>=0)
|
|
|
|
|
{
|
|
|
|
|
menu.CheckMenuItem( IDM_SHOW_RESTRICTEDZONE2, MF_BYCOMMAND | MF_CHECKED );
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
menu.CheckMenuItem( IDM_SHOW_RESTRICTEDZONE2, MF_BYCOMMAND | MF_UNCHECKED );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (restrictedZoneLayersID[2]>=0)
|
|
|
|
|
{
|
|
|
|
|
menu.CheckMenuItem( IDM_SHOW_RESTRICTEDZONE3, MF_BYCOMMAND | MF_CHECKED );
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
menu.CheckMenuItem( IDM_SHOW_RESTRICTEDZONE3, MF_BYCOMMAND | MF_UNCHECKED );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (restrictedZoneLayersID[3]>=0)
|
|
|
|
|
{
|
|
|
|
|
menu.CheckMenuItem( IDM_SHOW_RESTRICTEDZONE4, MF_BYCOMMAND | MF_CHECKED );
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
menu.CheckMenuItem( IDM_SHOW_RESTRICTEDZONE4, MF_BYCOMMAND | MF_UNCHECKED );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (restrictedZoneLayersID[4]>=0)
|
|
|
|
|
{
|
|
|
|
|
menu.CheckMenuItem( IDM_SHOW_RESTRICTEDZONE5, MF_BYCOMMAND | MF_CHECKED );
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
menu.CheckMenuItem( IDM_SHOW_RESTRICTEDZONE5, MF_BYCOMMAND | MF_UNCHECKED );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (noFlyZoneLayersID[0]>=0)
|
|
|
|
|
{
|
|
|
|
|
menu.CheckMenuItem( IDM_SHOW_NOFLYZONE1, MF_BYCOMMAND | MF_CHECKED );
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
menu.CheckMenuItem( IDM_SHOW_NOFLYZONE1, MF_BYCOMMAND | MF_UNCHECKED );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (noFlyZoneLayersID[1]>=0)
|
|
|
|
|
{
|
|
|
|
|
menu.CheckMenuItem( IDM_SHOW_NOFLYZONE2, MF_BYCOMMAND | MF_CHECKED );
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
menu.CheckMenuItem( IDM_SHOW_NOFLYZONE2, MF_BYCOMMAND | MF_UNCHECKED );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (noFlyZoneLayersID[2]>=0)
|
|
|
|
|
{
|
|
|
|
|
menu.CheckMenuItem( IDM_SHOW_NOFLYZONE3, MF_BYCOMMAND | MF_CHECKED );
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
menu.CheckMenuItem( IDM_SHOW_NOFLYZONE3, MF_BYCOMMAND | MF_UNCHECKED );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (noFlyZoneLayersID[3]>=0)
|
|
|
|
|
{
|
|
|
|
|
menu.CheckMenuItem( IDM_SHOW_NOFLYZONE4, MF_BYCOMMAND | MF_CHECKED );
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
menu.CheckMenuItem( IDM_SHOW_NOFLYZONE4, MF_BYCOMMAND | MF_UNCHECKED );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (noFlyZoneLayersID[4]>=0)
|
|
|
|
|
{
|
|
|
|
|
menu.CheckMenuItem( IDM_SHOW_NOFLYZONE5, MF_BYCOMMAND | MF_CHECKED );
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
menu.CheckMenuItem( IDM_SHOW_NOFLYZONE5, MF_BYCOMMAND | MF_UNCHECKED );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CGISDlg::OnShowRestrictedZone1(){
|
|
|
|
|
SetZoneState(restrictedZoneLayersID[0]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CGISDlg::OnShowRestrictedZone2(){
|
|
|
|
|
SetZoneState(restrictedZoneLayersID[1]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CGISDlg::OnShowRestrictedZone3(){
|
|
|
|
|
SetZoneState(restrictedZoneLayersID[2]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CGISDlg::OnShowRestrictedZone4(){
|
|
|
|
|
SetZoneState(restrictedZoneLayersID[3]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CGISDlg::OnShowRestrictedZone5(){
|
|
|
|
|
SetZoneState(restrictedZoneLayersID[4]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CGISDlg::OnShowNoFlyZone1(){
|
|
|
|
|
SetZoneState(noFlyZoneLayersID[0]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CGISDlg::OnShowNoFlyZone2(){
|
|
|
|
|
SetZoneState(noFlyZoneLayersID[1]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CGISDlg::OnShowNoFlyZone3(){
|
|
|
|
|
SetZoneState(noFlyZoneLayersID[2]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CGISDlg::OnShowNoFlyZone4(){
|
|
|
|
|
SetZoneState(noFlyZoneLayersID[3]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CGISDlg::OnShowNoFlyZone5(){
|
|
|
|
|
SetZoneState(noFlyZoneLayersID[4]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CGISDlg::OnBindZone(){
|
|
|
|
|
m_struMapOut.cmd=MapCmd_BindZone;
|
|
|
|
|
::SendMessage(GetParent()->GetSafeHwnd(),MESSAGE_B8MAP,0,0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|