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.
97 lines
2.1 KiB
C++
97 lines
2.1 KiB
C++
2 years ago
|
#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);
|
||
|
|
||
|
pMapControl->GetMap()->SetRefreshFlag(false);
|
||
|
}
|
||
|
|
||
|
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);
|
||
|
}
|
||
|
|
||
|
void ShowPlane::stopFly()
|
||
|
{
|
||
|
m_timer.stop();
|
||
|
// m_pDynamicLayer->SetVisible(false);
|
||
|
m_pMapControl->refreshDynamicLayer();
|
||
|
// m_pDynamicLayer->RemoveAll();
|
||
|
// m_planes.clear();
|
||
|
}
|
||
|
|
||
|
//添加飞机
|
||
|
void ShowPlane::addPlane(Plane* plane)
|
||
|
{
|
||
|
m_planes.append(plane);
|
||
|
}
|
||
|
|
||
|
//设置刷新时间
|
||
|
void ShowPlane::setRefreshTime(int ms)
|
||
|
{
|
||
|
m_timer.setInterval(ms);
|
||
|
}
|
||
|
|
||
|
void ShowPlane::movePlane()
|
||
|
{
|
||
|
// qDebug()<<"*************************movePlane";
|
||
|
foreach (Plane* plane, m_planes)
|
||
|
{
|
||
|
qDebug()<<"***************PlaneX:"<<plane->getPointX();
|
||
|
plane->setPosition(plane->getPointX()+0.001,plane->getPointY());
|
||
|
}
|
||
|
m_pMapControl->refreshDynamicLayer();
|
||
|
// m_pMapControl->Refresh();
|
||
|
}
|
||
|
|
||
|
//添加飞机到动态层
|
||
|
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);
|
||
|
}
|