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/tigooglemapprovider.h

151 lines
4.5 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.

/**************************************************************************
* 文件名 tigooglemapprovider.h
* =======================================================================
* 创 建 者 :田小帆
* 创建日期 2021-8-30
* 邮 箱 499131808@qq.com
* Q Q 499131808
* 公 司
* 功能描述
*
* ======================================================================
* 修改者
* 修改日期
* 修改内容
* ======================================================================
*
***************************************************************************/
#pragma once
#include "timapprovider.h"
#include <QMutex>
#include <QNetworkReply>
class TiGoogleMapProvider : public TiMapProvider
{
Q_OBJECT
public:
TiGoogleMapProvider(const QString& format, const quint32 averageSize,
const QGeoMapType::MapStyle mapType = QGeoMapType::CustomMap,
QObject* parent = nullptr);
// Google Specific private slots
private slots:
void _networkReplyError(QNetworkReply::NetworkError error);
void _googleVersionCompleted();
void _replyDestroyed();
protected:
// Google Specific private methods
void getSecGoogleWords(const int x, const int y, QString& sec1, QString& sec2) const;
void tryCorrectGoogleVersions(QNetworkAccessManager* networkManager);
// Google Specific attributes
bool _googleVersionRetrieved;
QNetworkReply* _googleReply;
QMutex _googleVersionMutex;
QString _versionGoogleMap;
QString _versionGoogleSatellite;
QString _versionGoogleLabels;
QString _versionGoogleTerrain;
QString _versionGoogleHybrid;
QString _secGoogleWord;
};
static const quint32 AVERAGE_GOOGLE_STREET_MAP = 4913;
static const quint32 AVERAGE_GOOGLE_SAT_MAP = 56887;
static const quint32 AVERAGE_GOOGLE_TERRAIN_MAP = 19391;
// -----------------------------------------------------------
// Google Street Map
class TiGoogleStreetMapProvider : public TiGoogleMapProvider
{
Q_OBJECT
public:
TiGoogleStreetMapProvider(QObject* parent = nullptr) :
TiGoogleMapProvider(QStringLiteral("png"), AVERAGE_GOOGLE_STREET_MAP,
QGeoMapType::StreetMap, parent)
{
}
protected:
QString getURL(const int x, const int y, const int zoom,
QNetworkAccessManager* networkManager) override;
};
// -----------------------------------------------------------
// Google Street Map
class TiGoogleSatelliteMapProvider : public TiGoogleMapProvider
{
Q_OBJECT
public:
TiGoogleSatelliteMapProvider(QObject* parent = nullptr) :
TiGoogleMapProvider(QStringLiteral("jpg"), AVERAGE_GOOGLE_SAT_MAP,
QGeoMapType::SatelliteMapDay, parent)
{
}
protected:
QString getURL(const int x, const int y, const int zoom,
QNetworkAccessManager* networkManager) override;
};
// -----------------------------------------------------------
// Google Labels Map
class TiGoogleLabelsMapProvider : public TiGoogleMapProvider
{
Q_OBJECT
public:
TiGoogleLabelsMapProvider(QObject* parent = nullptr) :
TiGoogleMapProvider(QStringLiteral("png"), AVERAGE_TILE_SIZE, QGeoMapType::CustomMap, parent)
{
}
protected:
QString getURL(const int x, const int y, const int zoom,
QNetworkAccessManager* networkManager) override;
};
// -----------------------------------------------------------
// Google Terrain Map
class TiGoogleTerrainMapProvider : public TiGoogleMapProvider
{
Q_OBJECT
public:
TiGoogleTerrainMapProvider(QObject* parent = nullptr) :
TiGoogleMapProvider(QStringLiteral("png"), AVERAGE_GOOGLE_TERRAIN_MAP,
QGeoMapType::TerrainMap, parent)
{
}
protected:
QString getURL(const int x, const int y, const int zoom,
QNetworkAccessManager* networkManager) override;
};
// -----------------------------------------------------------
// Google Hybrid Map
class TiGoogleHybridMapProvider : public TiGoogleMapProvider
{
Q_OBJECT
public:
TiGoogleHybridMapProvider(QObject* parent = nullptr) :
TiGoogleMapProvider(QStringLiteral("png"), AVERAGE_GOOGLE_SAT_MAP, QGeoMapType::HybridMap, parent)
{
}
protected:
QString getURL(const int x, const int y, const int zoom,
QNetworkAccessManager* networkManager) override;
};