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.
PayloadAPP/Src/RescueLoad/map/tianditu/include/timapenginedata.h

137 lines
3.7 KiB
C++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/**************************************************************************
* 文件名 TiMapEngineData.h
* =======================================================================
* 创 建 者 :田小帆
* 创建日期 2021-6-30
* 邮 箱 499131808@qq.com
* Q Q 499131808
* 公 司
* 功能描述
*
* ======================================================================
* 修改者
* 修改日期
* 修改内容
* ======================================================================
*
***************************************************************************/
#pragma once
#include <QObject>
/**
* @brief The TiMapCacheTile class 瓦片数据
*/
class TiMapTile : public QObject
{
Q_OBJECT
public:
explicit TiMapTile(uint hash) : m_hash(hash) { }
uint hash() const { return m_hash; }
QByteArray img() const { return m_img; }
int size() const { return m_size; }
QString format() const { return m_format; }
int x() const { return m_x; }
int y() const { return m_y; }
int zoom() const { return m_zoom; }
QString type() const { return m_type; }
int mapId() const { return m_mapId; }
void setImg(const QByteArray& img) { m_img = img; }
void setSize(int size) { m_size = size; }
void setFormat(const QString& format) { m_format = format; }
void setX(int x) { m_x = x; }
void setY(int y) { m_y = y; }
void setZoom(int z) { m_zoom = z; }
void setType(const QString& type) { m_type = type; }
void setMapId(int id) { m_mapId = id; }
private:
uint m_hash = 0; //由 x,y,zoom,type,计算得到的哈希值,具有tile的唯一性
QByteArray m_img; //瓦片具体数据
int m_size = 0; //瓦片数据大小
QString m_format; //瓦片格式
int m_x = 0; //瓦片x
int m_y = 0; //瓦片y
int m_zoom = 0; //瓦片zoom
QString m_type; //地图类型
int m_mapId = 0; //地图类型ID
};
/**
* @brief The TiMapTask class 任务基类
*/
class TiMapTask : public QObject
{
Q_OBJECT
public:
enum TaskType { taskInit, taskTestInternet, taskCacheTile, taskFetchTile };
Q_ENUM(TaskType)
TiMapTask(TaskType type) : m_type(type) { }
virtual ~TiMapTask() { }
virtual TaskType type() { return m_type; }
void setError(QString errorString = QString()) { emit error(type(), errorString); }
signals:
void error(TiMapTask::TaskType type, QString errorString);
private:
TaskType m_type;
};
/**
* @brief The TiMapTestInternetTask class 测试网络连接
* 弃用
*/
class TiMapTestInternetTask : public TiMapTask
{
Q_OBJECT
public:
TiMapTestInternetTask() : TiMapTask(TiMapTask::taskTestInternet) { }
};
/**
* @brief The TiMapFetchTileTask class tile(瓦片)获取任务类
*/
class TiMapFetchTileTask : public TiMapTask
{
Q_OBJECT
public:
TiMapFetchTileTask(uint hash) : TiMapTask(TiMapTask::taskFetchTile), m_hash(hash) { }
//设置已经获取到的tile
void setTileFetched(TiMapTile* tile) { emit tileFetched(tile); }
uint hash() const { return m_hash; }
signals:
void tileFetched(TiMapTile* tile);
private:
uint m_hash;
};
/**
* @brief The TiMapSaveTileTask class tile 保存类
*/
class TiMapSaveTileTask : public TiMapTask
{
Q_OBJECT
public:
TiMapSaveTileTask(TiMapTile* tile) : TiMapTask(TiMapTask::taskCacheTile), m_tile(tile) { }
~TiMapSaveTileTask()
{
if (m_tile) {
delete m_tile;
m_tile = nullptr;
}
}
TiMapTile* tile() const { return m_tile; }
private:
TiMapTile* m_tile = nullptr;
};