|
|
@ -107,6 +107,10 @@
|
|
|
|
//#include "FileParser/UGFileParserTile.h"
|
|
|
|
//#include "FileParser/UGFileParserTile.h"
|
|
|
|
//#include "FileParser/UGSimpleConfigParams.h"
|
|
|
|
//#include "FileParser/UGSimpleConfigParams.h"
|
|
|
|
//#include "FileParser/UGFileParseVector.h"
|
|
|
|
//#include "FileParser/UGFileParseVector.h"
|
|
|
|
|
|
|
|
//#include "private/Layer3DTree/UGKmlContainerSeal.h"
|
|
|
|
|
|
|
|
//#include "private/Layer3DTree/UGLayer3DTree.h"
|
|
|
|
|
|
|
|
//#include "private/Layer3DGML/UGLayer3DGML.h"
|
|
|
|
|
|
|
|
#include "private/Layer3DDatasetModel/UGLayer3DDatasetModelPro.h"
|
|
|
|
#include "Symbol/UGMarkerSymbolLib.h"
|
|
|
|
#include "Symbol/UGMarkerSymbolLib.h"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -834,7 +838,7 @@ void MainWindow::addMapConnect()
|
|
|
|
//连接信号actionTransformMap与槽transformMap
|
|
|
|
//连接信号actionTransformMap与槽transformMap
|
|
|
|
connect(actionTransformMap,&QAction::triggered,this,&MainWindow::transformMap);
|
|
|
|
connect(actionTransformMap,&QAction::triggered,this,&MainWindow::transformMap);
|
|
|
|
|
|
|
|
|
|
|
|
//连接信号actionTransformMap与ImportSceneDataDialog对话框
|
|
|
|
//连接信号actionImportData与ImportSceneDataDialog对话框
|
|
|
|
connect(actionImportData,&QAction::triggered,this,[&](){
|
|
|
|
connect(actionImportData,&QAction::triggered,this,[&](){
|
|
|
|
ImportSceneDataDialog importSceneDataDlg;
|
|
|
|
ImportSceneDataDialog importSceneDataDlg;
|
|
|
|
connect(&importSceneDataDlg,&ImportSceneDataDialog::sendSceneDataPath,this,&MainWindow::importSceneData);
|
|
|
|
connect(&importSceneDataDlg,&ImportSceneDataDialog::sendSceneDataPath,this,&MainWindow::importSceneData);
|
|
|
@ -1395,7 +1399,10 @@ void MainWindow::loadModelData()
|
|
|
|
//// pSceneControl->GetSceneEditWnd()->SetUserAction(UGEditType3D::ET3D_PolyLine,UGSceneUserAction::suaCreatePolyline);
|
|
|
|
//// pSceneControl->GetSceneEditWnd()->SetUserAction(UGEditType3D::ET3D_PolyLine,UGSceneUserAction::suaCreatePolyline);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// UGLayer3D* planeLayer = pSceneControl->GetUGLayer3Ds()->AddLayer(_U("Plane@Route")); //
|
|
|
|
UGLayer3D* planeLayer = pSceneControl->GetUGLayer3Ds()->AddLayer(_U("Plane@Route"));
|
|
|
|
|
|
|
|
pSceneControl->ViewToModelLayer(planeLayer);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// pSceneControl->ViewToLayer(planeLayer);
|
|
|
|
// pSceneControl->ViewToLayer(planeLayer);
|
|
|
|
// UGCameraWorld* cameraGb = pSceneControl->GetCameraWorld();
|
|
|
|
// UGCameraWorld* cameraGb = pSceneControl->GetCameraWorld();
|
|
|
|
// std::set< UGint > setObjsVisible;
|
|
|
|
// std::set< UGint > setObjsVisible;
|
|
|
@ -1557,7 +1564,6 @@ void MainWindow::loadModelData()
|
|
|
|
// layers->SetEditableLayer(modelLayer3D,true);
|
|
|
|
// layers->SetEditableLayer(modelLayer3D,true);
|
|
|
|
|
|
|
|
|
|
|
|
// modelLayer3D->SetStyle3D(style3D);
|
|
|
|
// modelLayer3D->SetStyle3D(style3D);
|
|
|
|
// UGPlottingLayer3D* plotLayer = new UGPlottingLayer3D();
|
|
|
|
|
|
|
|
// UGLayer3D* kmlLayer = pSceneControl->AddLayerFromFile("E:/a.kml");
|
|
|
|
// UGLayer3D* kmlLayer = pSceneControl->AddLayerFromFile("E:/a.kml");
|
|
|
|
// kmlLayer->SetSelectable(false);
|
|
|
|
// kmlLayer->SetSelectable(false);
|
|
|
|
// kmlLayer->SetEditable(true);
|
|
|
|
// kmlLayer->SetEditable(true);
|
|
|
@ -1988,13 +1994,13 @@ void MainWindow::importSceneData(QStringList imagePathList, QStringList terrainP
|
|
|
|
|
|
|
|
|
|
|
|
// pSceneControl->GetCameraWorld()->PitchCamera(UGMathEngine::DegreesToRadians(80));
|
|
|
|
// pSceneControl->GetCameraWorld()->PitchCamera(UGMathEngine::DegreesToRadians(80));
|
|
|
|
// UGCameraGlobal* cgb = (UGCameraGlobal*)pScene->GetCamera(_U("Camera"));
|
|
|
|
// UGCameraGlobal* cgb = (UGCameraGlobal*)pScene->GetCamera(_U("Camera"));
|
|
|
|
UGRect2D bounds = pScene->m_Layers.GetLayerInnerAt(0)->GetBounds();
|
|
|
|
// UGRect2D bounds = pScene->m_Layers.GetLayerInnerAt(0)->GetBounds();
|
|
|
|
double lon_la = UGMathEngine::DegreesToRadians(bounds.left);
|
|
|
|
// double lon_la = UGMathEngine::DegreesToRadians(bounds.left);
|
|
|
|
double lat_la = UGMathEngine::DegreesToRadians(bounds.bottom + bounds.Height()/2);
|
|
|
|
// double lat_la = UGMathEngine::DegreesToRadians(bounds.bottom + bounds.Height()/2);
|
|
|
|
double lon_cb = UGMathEngine::DegreesToRadians(bounds.left+bounds.Width()/2);
|
|
|
|
// double lon_cb = UGMathEngine::DegreesToRadians(bounds.left+bounds.Width()/2);
|
|
|
|
double lat_cb = UGMathEngine::DegreesToRadians(bounds.bottom + bounds.Height()/2);
|
|
|
|
// double lat_cb = UGMathEngine::DegreesToRadians(bounds.bottom + bounds.Height()/2);
|
|
|
|
qDebug()<<"******************Distance:"<<UGMathEngine::SphericalDistance(lon_la,lat_la,lon_cb,lat_cb);
|
|
|
|
// qDebug()<<"******************Distance:"<<UGMathEngine::SphericalDistance(lon_la,lat_la,lon_cb,lat_cb);
|
|
|
|
qDebug()<<"******************DistanceCos:"<<UGMathEngine::SphericalDistanceCos(lon_la,lat_la,lon_cb,lat_cb);
|
|
|
|
// qDebug()<<"******************DistanceCos:"<<UGMathEngine::SphericalDistanceCos(lon_la,lat_la,lon_cb,lat_cb);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// UGCameraLocal* cgb = (UGCameraLocal*)pScene->GetCamera(_U("Camera"));
|
|
|
|
// UGCameraLocal* cgb = (UGCameraLocal*)pScene->GetCamera(_U("Camera"));
|
|
|
@ -2250,10 +2256,10 @@ void MainWindow::contextMenuEvent(QContextMenuEvent *event)
|
|
|
|
|
|
|
|
|
|
|
|
if(rMenuType==RBtnMenuType::DefaultMenu && mapType == MapType::Map3D)
|
|
|
|
if(rMenuType==RBtnMenuType::DefaultMenu && mapType == MapType::Map3D)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
/*
|
|
|
|
|
|
|
|
UGCameraWorld* camera = pSceneControl->GetScene3D()->GetCamera(_U("Camera"));
|
|
|
|
UGCameraWorld* camera = pSceneControl->GetScene3D()->GetCamera(_U("Camera"));
|
|
|
|
UGCameraState cs = camera->m_StateCamera;
|
|
|
|
UGCameraState cs = camera->m_StateCamera;
|
|
|
|
pSceneControl->GetCameraWorld()->GetCamera(cs);
|
|
|
|
// pSceneControl->GetCameraWorld()->GetCamera(cs);
|
|
|
|
qDebug()<<"*************lat:"<<cs.dLat*180/PI;
|
|
|
|
qDebug()<<"*************lat:"<<cs.dLat*180/PI;
|
|
|
|
qDebug()<<"*************lon:"<<cs.dLon*180/PI;
|
|
|
|
qDebug()<<"*************lon:"<<cs.dLon*180/PI;
|
|
|
|
qDebug()<<"*************Distance:"<<cs.dDistance;
|
|
|
|
qDebug()<<"*************Distance:"<<cs.dDistance;
|
|
|
@ -2271,18 +2277,18 @@ void MainWindow::contextMenuEvent(QContextMenuEvent *event)
|
|
|
|
qDebug()<<"*************Roll1:"<<cs1.dRoll*180/PI;
|
|
|
|
qDebug()<<"*************Roll1:"<<cs1.dRoll*180/PI;
|
|
|
|
qDebug()<<"*************Tilt1:"<<cs1.dTilt*180/PI;
|
|
|
|
qDebug()<<"*************Tilt1:"<<cs1.dTilt*180/PI;
|
|
|
|
|
|
|
|
|
|
|
|
UGVector3d vPos;
|
|
|
|
// UGVector3d vPos;
|
|
|
|
UGQuaternion4d q;
|
|
|
|
// UGQuaternion4d q;
|
|
|
|
UGCameraWorld::PosAndOrientation2CameraState(vPos,q,cs);
|
|
|
|
// UGCameraWorld::PosAndOrientation2CameraState(vPos,q,cs);
|
|
|
|
qDebug()<<"*************vPos.x:"<<vPos.x;
|
|
|
|
// qDebug()<<"*************vPos.x:"<<vPos.x;
|
|
|
|
qDebug()<<"*************vPos.y:"<<vPos.y;
|
|
|
|
// qDebug()<<"*************vPos.y:"<<vPos.y;
|
|
|
|
qDebug()<<"*************vPos.z:"<<vPos.z;
|
|
|
|
// qDebug()<<"*************vPos.z:"<<vPos.z;
|
|
|
|
|
|
|
|
|
|
|
|
qDebug()<<"*************q.x:"<<q.x;
|
|
|
|
// qDebug()<<"*************q.x:"<<q.x;
|
|
|
|
qDebug()<<"*************q.y:"<<q.y;
|
|
|
|
// qDebug()<<"*************q.y:"<<q.y;
|
|
|
|
qDebug()<<"*************q.z:"<<q.z;
|
|
|
|
// qDebug()<<"*************q.z:"<<q.z;
|
|
|
|
qDebug()<<"*************q.w:"<<q.w;
|
|
|
|
// qDebug()<<"*************q.w:"<<q.w;
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// if(pSceneControl->GetSceneEditWnd()->GetUserAction() != 105) return;
|
|
|
|
// if(pSceneControl->GetSceneEditWnd()->GetUserAction() != 105) return;
|
|
|
@ -2305,6 +2311,7 @@ void MainWindow::startReceiveRealTimePositionInfoThread()
|
|
|
|
receiveRealTimePositionInfoTask->moveToThread(receiveRealTimePositionInfoThread);
|
|
|
|
receiveRealTimePositionInfoTask->moveToThread(receiveRealTimePositionInfoThread);
|
|
|
|
receiveRealTimePositionInfoThread->start();
|
|
|
|
receiveRealTimePositionInfoThread->start();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//关闭接收实时位置数据总线程
|
|
|
|
//关闭接收实时位置数据总线程
|
|
|
|
void MainWindow::closeReceiveRealTimePositionInfoThread()
|
|
|
|
void MainWindow::closeReceiveRealTimePositionInfoThread()
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -2332,6 +2339,7 @@ void MainWindow::startCollisionDetectThread(int ms)
|
|
|
|
|
|
|
|
|
|
|
|
emit startCollisionDetect(ms);
|
|
|
|
emit startCollisionDetect(ms);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
//关闭碰撞检测子线程
|
|
|
|
//关闭碰撞检测子线程
|
|
|
|
void MainWindow::closeCollisionDetectThread()
|
|
|
|
void MainWindow::closeCollisionDetectThread()
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -2349,55 +2357,14 @@ void MainWindow::closeCollisionDetectThread()
|
|
|
|
//********用于测试*************
|
|
|
|
//********用于测试*************
|
|
|
|
void MainWindow::test()
|
|
|
|
void MainWindow::test()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
/*
|
|
|
|
UGLayer3D* layer3D = pSceneControl->GetSceneEditWnd()->GetScene3D()->m_Layers.AddLayer(_U("大陆机场18@Route"));
|
|
|
|
QTimer* sendData = new QTimer;
|
|
|
|
// pSceneControl->ViewToLayer(layer3D);
|
|
|
|
sendData->setInterval(200);
|
|
|
|
loadModelData();
|
|
|
|
// QPointF pt;
|
|
|
|
|
|
|
|
pt.setX(119.668);
|
|
|
|
|
|
|
|
pt.setY(32.23);
|
|
|
|
|
|
|
|
// QList<double> lon, lat, heading,speed,relativeAlititude;
|
|
|
|
|
|
|
|
// GeoComputation geoComputation;
|
|
|
|
|
|
|
|
connect(sendData,&QTimer::timeout,this,[=](){
|
|
|
|
|
|
|
|
// qDebug()<<"***************TimeOut:";
|
|
|
|
|
|
|
|
// int i = 0;
|
|
|
|
|
|
|
|
lon.clear();
|
|
|
|
|
|
|
|
lat.clear();
|
|
|
|
|
|
|
|
heading.clear();
|
|
|
|
|
|
|
|
speed.clear();
|
|
|
|
|
|
|
|
relativeAlititude.clear();
|
|
|
|
|
|
|
|
pt = geoComputation.getDestinationPoint(pt.x(),pt.y(),90,4);
|
|
|
|
|
|
|
|
lon.append(pt.x());
|
|
|
|
|
|
|
|
lat.append(pt.y());
|
|
|
|
|
|
|
|
heading.append(90);
|
|
|
|
|
|
|
|
speed.append(20);
|
|
|
|
|
|
|
|
relativeAlititude.append(50);
|
|
|
|
|
|
|
|
// qDebug()<<"***************lon:"<<lon.takeLast();
|
|
|
|
|
|
|
|
// qDebug()<<"***************lat:"<<lat.takeLast();
|
|
|
|
|
|
|
|
// qDebug()<<"***************heading:"<<heading.takeLast();
|
|
|
|
|
|
|
|
// qDebug()<<"*********************************";
|
|
|
|
|
|
|
|
emit sendPositionData1(lon,lat,heading);
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*地形碰撞检测
|
|
|
|
testFlag = !testFlag;
|
|
|
|
testFlag = !testFlag;
|
|
|
|
|
|
|
|
|
|
|
|
qDebug()<<"*******************:"<<testFlag;
|
|
|
|
qDebug()<<"*******************:"<<testFlag;
|
|
|
|
qDebug() << "MainThread address: " << QThread::currentThread();
|
|
|
|
qDebug() << "MainThread address: " << QThread::currentThread();
|
|
|
|
/*
|
|
|
|
|
|
|
|
receiveRealTimePositionInfoThread = new QThread;
|
|
|
|
|
|
|
|
receiveRealTimePositionInfoTask = new RealTimePositionInfoThread;
|
|
|
|
|
|
|
|
receiveRealTimePositionInfoTask->moveToThread(receiveRealTimePositionInfoThread);
|
|
|
|
|
|
|
|
receiveRealTimePositionInfoThread->start();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
collisionThread = new QThread;
|
|
|
|
|
|
|
|
collisionDetectionTask = new CollisionDetectionThread(qMapControl);
|
|
|
|
|
|
|
|
collisionDetectionTask->moveToThread(collisionThread);
|
|
|
|
|
|
|
|
collisionThread->start();
|
|
|
|
|
|
|
|
connect(collisionDetectionTask,&CollisionDetectionThread::showNotify,this,&MainWindow::showNotify);
|
|
|
|
|
|
|
|
connect(collisionDetectionTask,&CollisionDetectionThread::requestPositionInfo,receiveRealTimePositionInfoTask,&RealTimePositionInfoThread::startSendCollisionDetectionPosInfo);
|
|
|
|
|
|
|
|
connect(this,&MainWindow::startCollisionDetect,collisionDetectionTask,&CollisionDetectionThread::start);
|
|
|
|
|
|
|
|
connect(receiveRealTimePositionInfoTask,&RealTimePositionInfoThread::sendCollisionDetectPosInfo,collisionDetectionTask,&CollisionDetectionThread::receiveLocationData);
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
startReceiveRealTimePositionInfoThread();
|
|
|
|
startReceiveRealTimePositionInfoThread();
|
|
|
|
|
|
|
|
|
|
|
@ -2426,16 +2393,12 @@ void MainWindow::test()
|
|
|
|
startCollisionDetectThread(1000);
|
|
|
|
startCollisionDetectThread(1000);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
m_pShowPlane->startFly();
|
|
|
|
m_pShowPlane->startFly();
|
|
|
|
// receiveRealTimePositionInfoThread->start();
|
|
|
|
|
|
|
|
// receiveRealTimePositionInfoTask->start();
|
|
|
|
|
|
|
|
// receiveRealTimePositionInfoTask->working();
|
|
|
|
|
|
|
|
// QThread::msleep(1000);
|
|
|
|
|
|
|
|
// emit stopGenerate();
|
|
|
|
|
|
|
|
// sendDataThread->quit();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(!testFlag) emit testEnd();
|
|
|
|
if(!testFlag) emit testEnd();
|
|
|
|
|
|
|
|
*/
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//气泡消息通知
|
|
|
|
void MainWindow::showNotify(QString title, QString body, QVariantMap data)
|
|
|
|
void MainWindow::showNotify(QString title, QString body, QVariantMap data)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
notifyManager->notify(title,body,data);
|
|
|
|
notifyManager->notify(title,body,data);
|
|
|
@ -2532,6 +2495,24 @@ void MainWindow::viewEntire()
|
|
|
|
//平移浏览地图操作
|
|
|
|
//平移浏览地图操作
|
|
|
|
void MainWindow::pan()
|
|
|
|
void MainWindow::pan()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
// UGCameraState state = pSceneControl->GetCameraWorld()->m_StateCamera;
|
|
|
|
|
|
|
|
// state.dLon = UGMathEngine::Degree2Radian(state.dLon*180/PI+0.001);
|
|
|
|
|
|
|
|
// state.dHeading = UGMathEngine::Degree2Radian(state.dHeading*180/PI+1);
|
|
|
|
|
|
|
|
// pSceneControl->GetCameraWorld()->SetCamera(state);
|
|
|
|
|
|
|
|
// UGCameraState lookatstate;
|
|
|
|
|
|
|
|
// lookatstate.dLon = UGMathEngine::Degree2Radian(119.715);
|
|
|
|
|
|
|
|
// lookatstate.dLat = UGMathEngine::Degree2Radian(32.2336);
|
|
|
|
|
|
|
|
// pSceneControl->GetCameraWorld()->SetLookAt(lookatstate);
|
|
|
|
|
|
|
|
// pSceneControl->GetCameraWorld()->m_StateLookAt.dLon = state.dLon;
|
|
|
|
|
|
|
|
// pSceneControl->GetCameraWorld()->m_StateLookAt.dLat = state.dLat;
|
|
|
|
|
|
|
|
UGCameraState lookatstate = pSceneControl->GetCameraWorld()->m_StateLookAt;
|
|
|
|
|
|
|
|
lookatstate.dLon = UGMathEngine::Degree2Radian(119.715);
|
|
|
|
|
|
|
|
lookatstate.dLat = UGMathEngine::Degree2Radian(32.2336);
|
|
|
|
|
|
|
|
// lookatstate.dAltitude = 0;
|
|
|
|
|
|
|
|
// lookatstate.dHeading = 0;
|
|
|
|
|
|
|
|
// lookatstate.dTilt = UGMathEngine::Degree2Radian(60);
|
|
|
|
|
|
|
|
pSceneControl->GetCameraWorld()->SetLookAt(lookatstate);
|
|
|
|
|
|
|
|
|
|
|
|
// QVariantMap data;
|
|
|
|
// QVariantMap data;
|
|
|
|
// data["icon"] = ":/Resources/WarningLevel1.png"; // 自定义消息图标,也可传入QPixmap
|
|
|
|
// data["icon"] = ":/Resources/WarningLevel1.png"; // 自定义消息图标,也可传入QPixmap
|
|
|
|
// notifyManager->notify("新消息","消息主体",data);
|
|
|
|
// notifyManager->notify("新消息","消息主体",data);
|
|
|
|