#pragma once #include #include #include #include class TiMapProvider : public QObject { Q_OBJECT public: TiMapProvider(const QString& imageFormat, const quint32 averageSize, const QGeoMapType::MapStyle mapType = QGeoMapType::CustomMap, QObject* parent = nullptr); /** * @brief getTileURL * @return 返回值有可能为空,在使用时需进行判断 */ virtual QNetworkRequest getTileURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager); virtual void setToken(const QString& token) { Q_UNUSED(token) } virtual bool isElevationProvider() const { return false; } virtual bool isBingProvider() const { return false; } QGeoMapType::MapStyle getMapStyle() const { return m_mapType; } QString getImageFormat(const QByteArray& image) const; enum { AVERAGE_TILE_SIZE = 13652 }; protected: virtual QString getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) = 0; QString tileXYToQuadKey(const int tileX, const int tileY, const int levelOfDetail) const; int getServerNum(const int x, const int y, const int max) const; protected: QGeoMapType::MapStyle m_mapType; QString m_referrer; QString m_imageFormat; quint32 m_averageSize; QByteArray m_userAgent; QString m_language; };