增加编辑图标;增加编辑工具条,增加二维航线交互式编辑功能。

master
cbwu 2 years ago
parent bd31a1b030
commit f612c56f5a

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject> <!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 10.0.1, 2023-06-18T09:18:49. --> <!-- Written by QtCreator 10.0.2, 2023-06-27T09:49:04. -->
<qtcreator> <qtcreator>
<data> <data>
<variable>EnvironmentId</variable> <variable>EnvironmentId</variable>

Binary file not shown.

After

Width:  |  Height:  |  Size: 568 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 288 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 598 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 569 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 722 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 677 B

@ -120,10 +120,7 @@ void DisplayRouteDialog::showRoute()
res->GetQueryDef(queryDef); res->GetQueryDef(queryDef);
layer->SetQueryDef(queryDef); layer->SetQueryDef(queryDef);
//图层样式 //图层样式
UGStyle lineStyle; UGStyle lineStyle = routeGVar.getRouteStyle(routeType.toInt());
lineStyle.SetLineStyle(6);
lineStyle.SetLineColor(routeGVar.getRouteTypeColor(routeType.toInt()));
lineStyle.SetLineWidth(1);
layer->SetStyle(lineStyle); layer->SetStyle(lineStyle);
// 航点标记动态图层 // 航点标记动态图层
@ -135,12 +132,12 @@ void DisplayRouteDialog::showRoute()
QStringList num = routeNumberList.join("\\,").split(","); QStringList num = routeNumberList.join("\\,").split(",");
int i = 0; int i = 0;
LayerOperator layerOpt; LayerOperator layerOpt;
UGGeoLine* line = NULL;
while(!res->IsEOF()) while(!res->IsEOF())
{ {
UGGeoLine* line = new UGGeoLine();
// line->SetStyle(&lineStyle); // line->SetStyle(&lineStyle);
res->GetGeometry(pTempGeomtry); res->GetGeometry(pTempGeomtry);
pTempGeomtry->ConvertToLine(*line); line = (UGGeoLine*)pTempGeomtry;
QString lineAlias = routeType + "_" + num.at(i); QString lineAlias = routeType + "_" + num.at(i);
pDyLayer->Add(Translator::QStr2UGStr(lineAlias),line); pDyLayer->Add(Translator::QStr2UGStr(lineAlias),line);
@ -149,10 +146,14 @@ void DisplayRouteDialog::showRoute()
i++; i++;
res->MoveNext(); res->MoveNext();
line = NULL;
} }
pMapEditorWnd->Refresh(); pMapEditorWnd->Refresh();
pMap = NULL;
pTempGeomtry = NULL;
pDyLayer = NULL;
layer = NULL;
/******************************************/ /******************************************/
/**********************DyLayer********************/ /**********************DyLayer********************/

@ -7,6 +7,8 @@
#include "Geometry/UGGeoPoint.h" #include "Geometry/UGGeoPoint.h"
#include "Scene/UGSelection3D.h" #include "Scene/UGSelection3D.h"
#include "Render/UGRenderObject.h" #include "Render/UGRenderObject.h"
#include "QDynamicLayer.h"
#include "QDynamicLayers.h"
LayerOperator::LayerOperator() LayerOperator::LayerOperator()
{ {
@ -126,6 +128,21 @@ void LayerOperator::getDynamicLayer(UGMap *pMap, UGDynamicLayer *&pDyLayer, UGSt
} }
} }
void LayerOperator::getQDynamicLayer(QMapControl *pMapControl, QDynamicLayer *&pDyLayer, QString dyLayerName)
{
UGDynamicLayers* pDylayers = &(pMapControl->GetMap()->m_DynamicLayers);
if(pDylayers->GetDynamicLayer(Translator::QStr2UGStr(dyLayerName)==NULL))
{
pDyLayer = new QDynamicLayer(dyLayerName);
}
else
{
int index = pDylayers->IndexOf(pDylayers->GetDynamicLayer(Translator::QStr2UGStr(dyLayerName)));
pDyLayer = pMapControl->getDynamicLayers().Get(index);
}
pDylayers = NULL;
}
UGLayer *LayerOperator::appendDatasetToMap(UGDatasetPtr pDataset, UGMap *m_pMap) UGLayer *LayerOperator::appendDatasetToMap(UGDatasetPtr pDataset, UGMap *m_pMap)
{ {
// 判断数据有效性 // 判断数据有效性
@ -139,10 +156,13 @@ UGLayer *LayerOperator::appendDatasetToMap(UGDatasetPtr pDataset, UGMap *m_pMap)
// 将Dataset添加到地图中 // 将Dataset添加到地图中
UGLayer* pLayer = pMap->m_Layers.AddDataset(pDataset, pDataset->GetType()); UGLayer* pLayer = pMap->m_Layers.AddDataset(pDataset, pDataset->GetType());
pMap = NULL;
pLayer = NULL;
return pLayer; return pLayer;
} }
//添加航点标记 //添加二维航点标记
void LayerOperator::addNodeLabel(UGGeoLine *pGeoline, UGDynamicLayer *pLabelDyLayer, QString routeType, QString routeNum) void LayerOperator::addNodeLabel(UGGeoLine *pGeoline, UGDynamicLayer *pLabelDyLayer, QString routeType, QString routeNum)
{ {
int pointNum = pGeoline->GetPointCount(); int pointNum = pGeoline->GetPointCount();
@ -151,35 +171,76 @@ void LayerOperator::addNodeLabel(UGGeoLine *pGeoline, UGDynamicLayer *pLabelDyLa
UGPoint2D point; UGPoint2D point;
//labelStyle //labelStyle
UGTextStyle tSty; UGTextStyle tSty = routeGVar.getLabelTextStyle(routeType.toInt());
tSty.SetBackColor(routeGVar.getRouteTypeColor(routeType.toInt()));
tSty.SetForeColor(routeGVar.getRouteTypeColor(routeType.toInt()));
tSty.SetSize(25);
tSty.SetFixedSize(true); tSty.SetFixedSize(true);
UGStyle sty; UGStyle sty;
sty.SetMarkerSize(8); // sty.SetMarkerStyle(0);
sty.SetFillForeColor(routeGVar.getRouteTypeColor(routeType.toInt())); sty.SetMarkerSize(6);
sty.SetFillForeColor(UGRGB(255,0,0));
// sty.SetFillForeColor(routeGVar.getRouteTypeColor(routeType.toInt()));
// sty.SetPointColor(routeGVar.getRouteTypeColor(routeType.toInt()));
auto pGeoText(new UGGeoText);
pGeoText->SetTextStyle(tSty);
QString geoTextName;
for(int i=1;i<=pointNum;i++) for(int i=1;i<=pointNum;i++)
{ {
point.x = nodePoints->x; point.x = nodePoints->x;
point.y = nodePoints->y; point.y = nodePoints->y;
//添加注记
auto pGeoText(new UGGeoText); geoTextName = routeNum + "-" + QString::number(i);
QString geoTextName = routeNum + "-" + QString::number(i);
auto text = UGSubText(Translator::QStr2UGStr(geoTextName)); auto text = UGSubText(Translator::QStr2UGStr(geoTextName));
pGeoText->Make(point, text); pGeoText->AddSub(point, text);
pGeoText->SetTextStyle(tSty);
auto pGeoNode(new UGGeoPoint);
pGeoNode->Make(point);
pGeoNode->SetStyle(&sty);
pLabelDyLayer->Add(Translator::QStr2UGStr("LB"+geoTextName),pGeoText); pLabelDyLayer->Add(Translator::QStr2UGStr("LB"+geoTextName),pGeoText);
pLabelDyLayer->Add(Translator::QStr2UGStr("PT"+geoTextName),pGeoNode); //添加节点
// auto pGeoNode(new UGGeoPoint);
// pGeoNode->Make(point);
// pGeoNode->SetStyle(&sty);
// pLabelDyLayer->Add(Translator::QStr2UGStr("PT"+geoTextName),pGeoNode);
nodePoints++; //Node指针移动 nodePoints++; //Node指针移动
// delete pGeoNode;
}
// delete pGeoText;
nodePoints = NULL;
}
void LayerOperator::addNodeLabel(QMapControl *qMapControl, UGRecordsetPtr selectionRes)
{
selectionRes->MoveFirst();
// UGDynamicLayers* pDyLayers = &qMapControl->GetMap()->m_DynamicLayers;
UGGeometry* geometry = NULL;
UGGeoLine* line = NULL;
UGVariant v;
QString routeType;
QString routeNum;
UGString labelText;
UGDynamicLayer* pDyLayer = NULL;
qDebug()<<"********************RecordCount:"<<selectionRes->GetRecordCount();
while(!selectionRes->IsEOF())
{
selectionRes->GetFieldValue(Translator::QStr2UGStr(routeGVar.routeFieldsName.RouteType),v);
routeType = Translator::UGStr2QStr(v.ToString());
selectionRes->GetFieldValue(Translator::QStr2UGStr(routeGVar.routeFieldsName.RouteNumber),v);
routeNum = Translator::UGStr2QStr(v.ToString());
// pDyLayer = pDyLayers->GetDynamicLayer(Translator::QStr2UGStr(("LabelDyLayer" + routeType)));
getDynamicLayer(qMapControl->GetMap(),pDyLayer,Translator::QStr2UGStr(("LabelDyLayer" + routeType)));
selectionRes->GetGeometry(geometry);
line = (UGGeoLine*)geometry;
addNodeLabel(line,pDyLayer,routeType,routeNum);
selectionRes->MoveNext();
// for(int i = 1;i<=geometry->GetSubPntCount(0);i++)
// {
// labelText = v.ToString() + _U("-") + Translator::QStr2UGStr(QString::number(i));
// pDyLayer->Add();
// }
} }
qMapControl->GetMap()->m_DynamicLayers.Add(pDyLayer);
pDyLayer = NULL;
geometry = NULL;
line = NULL;
} }
//导入kml文件时临时显示航线,仅用于二维地图 //导入kml文件时临时显示航线,仅用于二维地图

@ -26,12 +26,15 @@ public:
void addGeometryInDynamicLayer(UGDynamicLayer* pDyLayer,UGRecordsetPtr res,UGStyle &sty); void addGeometryInDynamicLayer(UGDynamicLayer* pDyLayer,UGRecordsetPtr res,UGStyle &sty);
//获取动态图层
void getDynamicLayer(UGMap* pMap,UGDynamicLayer* &pDyLayer,UGString dyLayerName); void getDynamicLayer(UGMap* pMap,UGDynamicLayer* &pDyLayer,UGString dyLayerName);
void getQDynamicLayer(QMapControl* pMapControl,QDynamicLayer* &pDyLayer,QString dyLayerName);
UGLayer* appendDatasetToMap(UGDatasetPtr pDataset,UGMap* m_pMap); //将dataset展示到地图中 UGLayer* appendDatasetToMap(UGDatasetPtr pDataset,UGMap* m_pMap); //将dataset展示到地图中
//添加航点标记 //添加航点标记
void addNodeLabel(UGGeoLine* pGeoline,UGDynamicLayer* pLabelDyLayer,QString routeType,QString routeNum); void addNodeLabel(UGGeoLine* pGeoline,UGDynamicLayer* pLabelDyLayer,QString routeType,QString routeNum);
void addNodeLabel(QMapControl* qMapControl,UGRecordsetPtr selectionRes);
//导入kml文件时临时显示航线 //导入kml文件时临时显示航线
void showKMLTemporary(QMapControl* qMapControl,UGRecordsetPtr kmlRes); void showKMLTemporary(QMapControl* qMapControl,UGRecordsetPtr kmlRes);

@ -22,6 +22,7 @@
#include "showplane3d.h" #include "showplane3d.h"
#include <QToolBar> #include <QToolBar>
#include <QToolButton>
#include <QMessageBox> #include <QMessageBox>
#include <QFileDialog> #include <QFileDialog>
#include <QDebug> #include <QDebug>
@ -249,11 +250,12 @@ void UGSTDCALL AfterGeometryAddedCallback(UGlong pWnd, UGbool &bCancel, UGint nG
//void UGSTDCALL BeginEditHandleProcCallback(UGlong pWnd, UGbool &bCancel, UGint nEditSelType, UGint *pHandle, UGint nCount, UGdouble dx, UGdouble dy) void UGSTDCALL BeginEditHandleProcCallback(UGlong pWnd, UGbool &bCancel, UGint nEditSelType, UGint *pHandle, UGint nCount, UGdouble dx, UGdouble dy)
//{ {
// qDebug()<<"**************************BeginEditHandleProcCallback"; qDebug()<<"**************************BeginEditHandleProcCallback";
// qDebug()<<"**************************BeginEditHandleProcCallback"; qDebug()<<"**************************nEditSelType"<<nEditSelType;
//} qDebug()<<"**************************nCount"<<nCount;
}
//void UGSTDCALL EditHandleCanceledProcCallback(UGlong pWnd, UGint nEditSelType, UGint *pHandle, UGint nCount) //void UGSTDCALL EditHandleCanceledProcCallback(UGlong pWnd, UGint nEditSelType, UGint *pHandle, UGint nCount)
//{ //{
@ -267,11 +269,11 @@ void UGSTDCALL AfterGeometryAddedCallback(UGlong pWnd, UGbool &bCancel, UGint nG
// qDebug()<<"**************************AfterGeometryModifiedProcCallback"; // qDebug()<<"**************************AfterGeometryModifiedProcCallback";
//} //}
//void UGSTDCALL BeforeGeometryModifiedProcCallback(UGlong pWnd, UGbool &bCancel, UGint nGeometryID, UGLayer *pLayer) void UGSTDCALL BeforeGeometryModifiedProcCallback(UGlong pWnd, UGbool &bCancel, UGint nGeometryID, UGLayer *pLayer)
//{ {
// qDebug()<<"**************************BeforeGeometryModifiedProcCallback"; qDebug()<<"**************************BeforeGeometryModifiedProcCallback";
// qDebug()<<"**************************BeforeGeometryModifiedProcCallback"; qDebug()<<"**************************BeforeGeometryModifiedProcCallback";
//} }
//void UGSTDCALL AffterDatasetModifiedProcCallback(void* pLayerDataset,UGint nID,UGRect2D rect2D,UGModifyDatasetFlag flg) //void UGSTDCALL AffterDatasetModifiedProcCallback(void* pLayerDataset,UGint nID,UGRect2D rect2D,UGModifyDatasetFlag flg)
@ -343,6 +345,8 @@ MainWindow::MainWindow(QWidget *parent)
addMapConnect();//调用连接信号和槽的函数 addMapConnect();//调用连接信号和槽的函数
addEditConnect();
// 给窗口设置策略: Qt::DefaultContextMenu // 给窗口设置策略: Qt::DefaultContextMenu
// 在窗口中按下鼠标右键, 这个事件处理器函数被qt框架调用 QWidget::contextMenuEvent() // 在窗口中按下鼠标右键, 这个事件处理器函数被qt框架调用 QWidget::contextMenuEvent()
setContextMenuPolicy(Qt::DefaultContextMenu); setContextMenuPolicy(Qt::DefaultContextMenu);
@ -362,12 +366,10 @@ MainWindow::MainWindow(QWidget *parent)
qDebug()<<"***********s2:"<<s; qDebug()<<"***********s2:"<<s;
// int id = ms->GetSymbolAt(0)->GetID(); // int id = ms->GetSymbolAt(0)->GetID();
// QString name = Translator::UGStr2QStr(ms->GetSymbolAt(0)->GetName()); // QString name = Translator::UGStr2QStr(ms->GetSymbolAt(0)->GetName());
// qDebug()<<"****************:"; // qDebug()<<"****************:";
/* /*
qDebug()<<"****************:" <<QDir("./").absolutePath(); qDebug()<<"****************:" <<QDir("./").absolutePath();
UGDatasetVector* dv = (UGDatasetVector*) m_pWorkspace->GetDataSource(0)->GetDataset(line3DSetAlias).get(); UGDatasetVector* dv = (UGDatasetVector*) m_pWorkspace->GetDataSource(0)->GetDataset(line3DSetAlias).get();
@ -422,12 +424,8 @@ void MainWindow::setupUI(QMainWindow *mainWindow)
//初始化菜单 //初始化菜单
initMenu(mainWindow); initMenu(mainWindow);
//向应用程序窗体中添加工具条对象 //初始化工具条
mainToolBar = new QToolBar(mainWindow); initMainToolBar(mainWindow);
mainWindow->addToolBar(Qt::TopToolBarArea,mainToolBar);
//调用addMapAction函数向界面中添加功能按钮
addMapAction(mainWindow);
} }
//工作空间初始化 //工作空间初始化
@ -543,9 +541,9 @@ void MainWindow::initMapControl()
// qMapControl->GetUGMapWnd()->SetBeforeGeometryDeletedFunc(BeforeGeometryDeletedProcCallback,(UGlong)qMapControl); // qMapControl->GetUGMapWnd()->SetBeforeGeometryDeletedFunc(BeforeGeometryDeletedProcCallback,(UGlong)qMapControl);
// qMapControl->GetUGMapWnd()->SetAfterGeometryDeletedFunc(AfterGeometryDeletedProcCallback,(UGlong)qMapControl); // qMapControl->GetUGMapWnd()->SetAfterGeometryDeletedFunc(AfterGeometryDeletedProcCallback,(UGlong)qMapControl);
// qMapControl->GetUGMapWnd()->SetEditHandleCanceledFunc(EditHandleCanceledProcCallback,(UGlong)qMapControl); // qMapControl->GetUGMapWnd()->SetEditHandleCanceledFunc(EditHandleCanceledProcCallback,(UGlong)qMapControl);
// qMapControl->GetUGMapWnd()->SetBeginEditHandleFunc(BeginEditHandleProcCallback,(UGlong)qMapControl); qMapControl->GetUGMapWnd()->SetBeginEditHandleFunc(BeginEditHandleProcCallback,(UGlong)qMapControl);
// qMapControl->GetUGMapWnd()->SetAfterGeometryModifiedFunc(AfterGeometryModifiedProcCallback,(UGlong)qMapControl); // qMapControl->GetUGMapWnd()->SetAfterGeometryModifiedFunc(AfterGeometryModifiedProcCallback,(UGlong)qMapControl);
// qMapControl->GetUGMapWnd()->SetBeforeGeometryModifiedFunc(BeforeGeometryModifiedProcCallback,(UGlong)qMapControl); qMapControl->GetUGMapWnd()->SetBeforeGeometryModifiedFunc(BeforeGeometryModifiedProcCallback,(UGlong)qMapControl);
qMapControl->setFocus(); qMapControl->setFocus();
} }
@ -567,6 +565,29 @@ void MainWindow::initMenu(QMainWindow* mainWindow)
inputPosDlg = new ComputeOffsetPositionDialog; inputPosDlg = new ComputeOffsetPositionDialog;
} }
//工具条初始化
void MainWindow::initMainToolBar(QMainWindow *mainWindow)
{
//向应用程序窗体中添加工具条对象
mainToolBar = new QToolBar(mainWindow);
mainWindow->addToolBar(Qt::TopToolBarArea,mainToolBar);
//调用addMapAction函数向界面中添加功能按钮
addMapAction(mainWindow);
QToolButton *tb = qobject_cast<QToolButton *>(mainToolBar->widgetForAction(actionEdit));
tb->setStyleSheet("QToolButton::menu-indicator{image:none}");//去掉下拉黑色小箭头
//编辑工具条
editToolMenu = new QMenu(mainWindow);
editToolBar = new QToolBar(mainWindow);
addEditToolAction();
wactionEdit = new QWidgetAction(editToolBar);
wactionEdit->setDefaultWidget(editToolBar);
editToolMenu->addAction(wactionEdit);
tb->setMenu(editToolMenu);
tb->setPopupMode (QToolButton::InstantPopup);
}
//添加QAction //添加QAction
void MainWindow::addMapAction(QMainWindow *mainWindow) void MainWindow::addMapAction(QMainWindow *mainWindow)
{ {
@ -606,6 +627,10 @@ void MainWindow::addMapAction(QMainWindow *mainWindow)
actionSelect = new QAction(QIcon(":/Resources/Select.png"),"Select",this); actionSelect = new QAction(QIcon(":/Resources/Select.png"),"Select",this);
mainToolBar->addAction(actionSelect); mainToolBar->addAction(actionSelect);
//为"编辑"按钮添加按钮图标并将其置于工具条上
actionEdit = new QAction(QIcon(":/Resources/Edit.png"),"Edit",this);
mainToolBar->addAction(actionEdit);
//为"绘制点"按钮添加按钮图标并将其置于工具条上 //为"绘制点"按钮添加按钮图标并将其置于工具条上
actionDrawPoint = new QAction(QIcon(":/Resources/Image_Point.png"),"DrawPoint",this); actionDrawPoint = new QAction(QIcon(":/Resources/Image_Point.png"),"DrawPoint",this);
mainToolBar->addAction(actionDrawPoint); mainToolBar->addAction(actionDrawPoint);
@ -653,6 +678,27 @@ void MainWindow::addMapMenuAction()
actionExportFile = attributeRBtnMenu->addAction("导出"); actionExportFile = attributeRBtnMenu->addAction("导出");
} }
//声明编辑条的行为行数
void MainWindow::addEditToolAction()
{
//为"编辑"按钮添加按钮图标并将其置于工具条上
actionStartEdit = new QAction(QIcon(":/Resources/Edit1.png"),"Edit",this);
editToolBar->addAction(actionStartEdit);
//为"编辑节点"按钮添加按钮图标并将其置于工具条上
actionEditNode = new QAction(QIcon(":/Resources/EditNode1.png"),"编辑节点",this);
editToolBar->addAction(actionEditNode);
actionEditNode->setEnabled(false);
//为"添加节点"按钮添加按钮图标并将其置于工具条上
// actionAddNode = new QAction(QIcon(":/Resources/AddNode.png"),"添加节点",this);
// editToolBar->addAction(actionAddNode);
//为"删除节点"按钮添加按钮图标并将其置于工具条上
// actionDeleteNode = new QAction(QIcon(":/Resources/DeleteNode.png"),"删除节点",this);
// editToolBar->addAction(actionDeleteNode);
}
//Map连接信号和槽的函数 //Map连接信号和槽的函数
void MainWindow::addMapConnect() void MainWindow::addMapConnect()
{ {
@ -749,6 +795,39 @@ void MainWindow::addMapConnect()
connect(qMapControl,&QMapControl::showAttributeMenu,this,&MainWindow::showAttributeMenu); connect(qMapControl,&QMapControl::showAttributeMenu,this,&MainWindow::showAttributeMenu);
} }
//声明edit连接信号和槽的函数
void MainWindow::addEditConnect()
{
//连接信号actionEdit和槽Edit
connect(actionStartEdit,&QAction::triggered,this,&MainWindow::Edit);
connect(actionEditNode,&QAction::triggered,this,[=](){
if(!qMapControl->getEditNodeState())
{//开启节点编辑
actionEditNode->setIcon(QIcon(":/Resources/EditNode.png"));
qMapControl->EditNode(true);
qMapControl->Refresh();
}
else
{//关闭节点编辑
actionEditNode->setIcon(QIcon(":/Resources/EditNode1.png"));
qMapControl->EditNode(false);
qMapControl->Refresh();
}
});
connect(qMapControl,&QMapControl::closeEditNode,this,[=](){
actionEditNode->setIcon(QIcon(":/Resources/EditNode1.png"));
qMapControl->EditNode(false);
qMapControl->Refresh();
});
// connect(actionStartEdit,&QAction::triggered,this,[=](){
// qMapControl->AddNode();
// qMapControl->Refresh();
// });
}
//三维场景容器初始化 //三维场景容器初始化
void MainWindow::initSceneControl(QWidget* parent) void MainWindow::initSceneControl(QWidget* parent)
{ {
@ -1732,7 +1811,6 @@ void MainWindow::transformMap()
default: default:
break; break;
} }
} }
//导入场景数据 //导入场景数据
@ -2184,6 +2262,8 @@ void MainWindow::openRasterMap()
//刷新地图窗口 //刷新地图窗口
qMapControl->Refresh(); qMapControl->Refresh();
// pMap = NULL;
dataSource = NULL;
/************************************test*******************************/ /************************************test*******************************/
//二维飞机实时位置显示测试 //二维飞机实时位置显示测试
@ -2197,14 +2277,24 @@ void MainWindow::openRasterMap()
// p->SetX(119.718414); // p->SetX(119.718414);
// p->SetY(32.234539); // p->SetY(32.234539);
// UGStyle sty; // UGStyle sty;
// sty.SetMarkerStyle(-1);
// sty.SetMarkerSize(16); // sty.SetMarkerSize(16);
// sty.SetFillForeColor(UGRGB(0,255,0));
// sty.SetMarkerStyle(907711); //907711 // sty.SetMarkerStyle(907711); //907711
// sty.SetMarkerWidth(20); // sty.SetMarkerWidth(20);
// sty.SetMarkerHeight(50); // sty.SetMarkerHeight(50);
// sty.SetFixedPixelSize(true); // sty.SetFixedPixelSize(true);
// p->SetStyle(&sty); // p->SetStyle(&sty);
// pMap->m_TrackingLayer.Add(p,_U("a")); // pMap->m_TrackingLayer.Add(p,_U("a"));
// UGGeometry* geo = pMap->m_TrackingLayer.GetAt(0)->GetGeometry();
// delete geo;
// delete p;
// pMap->m_TrackingLayer.RemoveAll();
// pMap->m_TrackingLayer.Remove(_U("a"));
// qMapControl->Refresh(); // qMapControl->Refresh();
// qDebug()<<"****************:"<<(p==NULL);
// delete p;
// qDebug()<<"****************:"<<(p==NULL);
} }
/****************地图基础操作**********************/ /****************地图基础操作**********************/
@ -2244,6 +2334,52 @@ void MainWindow::Select()
else if(mapType==MapType::Map3D) else if(mapType==MapType::Map3D)
pSceneControl->Select(); pSceneControl->Select();
} }
//开启编辑
void MainWindow::Edit()
{
// UGMapEditorWnd* editorWnd = qMapControl->GetUGMapWnd();
// editorWnd->SetSnapedPointColor(UGRGB(255,0,0)); //有效
// editorWnd->SetSnapedLineColor(UGRGB(255,0,0)); //有效
// editorWnd->SetGridSnape(true);
// UGStyle sty;
// sty.SetLineColor(UGRGB(255,0,0));
// editorWnd->SetSnapedStyle(1,&sty);
if(mapType==MapType::Map2D)
{
UGLayer* editLayer = qMapControl->getSelectionLayer();
if(editLayer!=NULL)
{
if(!editLayer->IsEditable())
{//开启编辑
qDebug()<<"***********************OpenEdit:";
qMapControl->setEditable(editLayer,true);
actionStartEdit->setIcon(QIcon(":/Resources/Edit.png"));
// actionEditNode->setIcon(QIcon(":/Resources/EditNode.png"));
qMapControl->GetMap()->m_DynamicLayers.RemoveAll();
qMapControl->Refresh();
actionEditNode->setEnabled(true);
}
else
{//关闭编辑
qDebug()<<"***********************CloseEdit:";
qMapControl->setEditable(editLayer,false);
actionStartEdit->setIcon(QIcon(":/Resources/Edit1.png"));
actionEditNode->setIcon(QIcon(":/Resources/EditNode1.png"));
actionEditNode->setEnabled(false);
LayerOperator layerOpt;
layerOpt.addNodeLabel(qMapControl,editLayer->GetSelection()->ToRecordset(false));
editLayer->ClearSelection();
qMapControl->Refresh();
}
editLayer = NULL;
}
}
}
#pragma endregion } #pragma endregion }
/****************地图量算操作**********************/ /****************地图量算操作**********************/

@ -11,7 +11,7 @@
#include <QProgressDialog> #include <QProgressDialog>
#include <QString> #include <QString>
#include <QMutex> #include <QMutex>
#include <QWidgetAction>
//子窗口头文件 //子窗口头文件
#include "saveroutedialog.h" #include "saveroutedialog.h"
@ -77,12 +77,18 @@ private:
void initMenu(QMainWindow* mainWindow); //Map菜单初始化 void initMenu(QMainWindow* mainWindow); //Map菜单初始化
void initMainToolBar(QMainWindow* mainWindow); //工具条初始化
void addMapAction(QMainWindow *mainWindow);//声明界面上各元素的行为函数 void addMapAction(QMainWindow *mainWindow);//声明界面上各元素的行为函数
void addMapMenuAction();//声明Map右键菜单的行为函数 void addMapMenuAction();//声明Map右键菜单的行为函数
void addEditToolAction();//声明编辑条的行为行数
void addMapConnect();//声明Map连接信号和槽的函数 void addMapConnect();//声明Map连接信号和槽的函数
void addEditConnect();//声明edit连接信号和槽的函数
void initSceneControl(QWidget* parent); //三维场景容器初始化 void initSceneControl(QWidget* parent); //三维场景容器初始化
void initSceneMene(); //场景菜单初始化 void initSceneMene(); //场景菜单初始化
@ -187,6 +193,20 @@ private:
QAction *actionImportData; QAction *actionImportData;
QAction *actionEdit;
QWidgetAction* wactionEdit;
//声明编辑工具条对象
QMenu *editToolMenu;
QToolBar *editToolBar;
//工具条上各对象
QAction *actionStartEdit;
QAction *actionEditNode;
// QAction *actionAddNode;
// QAction *actionDeleteNode;
//绘制模式 //绘制模式
qint16 drawMode; qint16 drawMode;
@ -226,6 +246,8 @@ public slots:
void Select(); //声明槽函数Select void Select(); //声明槽函数Select
void Edit(); //声明槽函数Edit
void drawPoint();//声明槽函数drawPoint(绘制点) void drawPoint();//声明槽函数drawPoint(绘制点)
void drawLine();//声明槽函数drawLine(绘制线) void drawLine();//声明槽函数drawLine(绘制线)

@ -78,5 +78,11 @@
<file>Resources/Plane/FH-981A.svg</file> <file>Resources/Plane/FH-981A.svg</file>
<file>Resources/Plane/FH-981C.png</file> <file>Resources/Plane/FH-981C.png</file>
<file>Resources/Plane/FH-981C.svg</file> <file>Resources/Plane/FH-981C.svg</file>
<file>Resources/Edit.png</file>
<file>Resources/EditNode.png</file>
<file>Resources/AddNode.png</file>
<file>Resources/DeleteNode.png</file>
<file>Resources/Edit1.png</file>
<file>Resources/EditNode1.png</file>
</qresource> </qresource>
</RCC> </RCC>

Loading…
Cancel
Save