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++

#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);
}