#include "showplane.h" #include "Map/UGMap.h" #include "qdebug.h" #include "translator.h" ShowPlane::ShowPlane(QObject *parent) : QObject{parent} { } ShowPlane::ShowPlane(QMapControl *pMapControl) { m_pMapControl = pMapControl; addPlaneDyLayer(pMapControl); this->refreshTime = 500; pMapControl->GetMap()->SetRefreshFlag(false); // num_data = 0; } ShowPlane::~ShowPlane() { } void ShowPlane::startFly() { addPlaneToDyLayer(); //每500ms刷新一次 // m_timer.setInterval(500); // connect(&m_timer,&QTimer::timeout,this,&ShowPlane::movePlane); // m_timer.start(); m_pDynamicLayer->SetVisible(true); emit requestPositionInfo(this->refreshTime); } void ShowPlane::stopFly() { // m_timer.stop(); // m_pDynamicLayer->SetVisible(false); emit rejectPositionInfo(); m_pMapControl->refreshDynamicLayer(); // num_data = 0; // m_pDynamicLayer->RemoveAll(); // m_planes.clear(); } //添加飞机 void ShowPlane::addPlane(Plane* plane) { m_planes.append(plane); } //设置刷新时间 void ShowPlane::setRefreshTime(int ms) { this->refreshTime = ms; m_timer.setInterval(ms); } //接收飞机的位置信息 void ShowPlane::receivePosition(QList lon,QList lat,QList heading) { // qDebug()<<"***************lon:"<qmapLon[index].append(lon.at(index)); this->qmapLat[index].append(lat.at(index)); this->qmapHeading[index].append(heading.at(index)); } // qDebug()<<"************************Lon:"<qmapLon[0].takeLast(); // num_data++; // movePlane(); if(this->qmapLon[0].size()==MAX) removePositionContainer(20); mutex.unlock(); */ m_planes[0]->setPosition(lon.takeLast(),lat.takeLast()); m_pMapControl->refreshDynamicLayer(); } void ShowPlane::receivePositionInfo(QMap > &qmapLon, QMap > &qmapLat, QMap > &qmapHeading) { // this->qmapLon = qmapLon; // this->qmapLat = qmapLat; // this->qmapHeading = qmapHeading; // qDebug()<<"************************show lon:"<setPosition(qmapLon[0].takeLast(),qmapLat[0].takeLast()); // m_pMapControl->refreshDynamicLayer(); } void ShowPlane::movePlane(QMap> qmapLon,QMap> qmapLat,QMap> qmapHeading) { int i = 0; // if(this->qmapLon[i].isEmpty()) return; // qDebug()<<"*************************movePlaneLon:";//<qmapLon[0].takeLast(); foreach (Plane* plane, m_planes) { // qDebug()<<"***************PlaneX:"<getPointX(); plane->setPosition(qmapLon[i].takeLast(),qmapLat[i].takeLast()); i++; // plane->setPosition(plane->getPointX()+0.001,plane->getPointY()); } m_pMapControl->refreshDynamicLayer(); } //添加飞机到动态层 void ShowPlane::addPlaneToDyLayer() { foreach (Plane* plane, m_planes) { UGString planeName = Translator::QStr2UGStr(plane->getPlaneName()); m_pDynamicLayer->Add(planeName,plane->getGeometry()); } } void ShowPlane::addPlaneDyLayer(QMapControl* pMapControl) { UGDynamicLayers* pDyLayers = &(pMapControl->GetMap()->m_DynamicLayers); UGString dylayername = _U("Plane"); if(pDyLayers->GetDynamicLayer(dylayername)==NULL) { m_pDynamicLayer = new UGDynamicLayer(dylayername); m_pDynamicLayer->SetLayerName(dylayername); pDyLayers->Add(m_pDynamicLayer); } else { m_pDynamicLayer = pDyLayers->GetDynamicLayer(dylayername); } pMapControl->GetMap()->SetRefreshFlag(false); } //清除部分容器值 void ShowPlane::removePositionContainer(int count) { for(int i=0;iqmapLon[i].remove(0,count); // this->qmapLat[i].remove(0,count); // this->qmapHeading[i].remove(0,count); } }