From 863c0ffce2e508a78280d32b3a1df0170997f870 Mon Sep 17 00:00:00 2001 From: Pierre TILAK Date: Tue, 17 Sep 2019 15:17:31 +1200 Subject: [PATCH] Fix Image format bing/google --- src/QtLocationPlugin/BingMapProvider.cpp | 4 +- src/QtLocationPlugin/BingMapProvider.h | 10 ++--- src/QtLocationPlugin/GoogleMapProvider.cpp | 14 ++++--- src/QtLocationPlugin/GoogleMapProvider.h | 18 ++++----- src/QtLocationPlugin/QGCMapEngine.cpp | 4 +- src/QtLocationPlugin/QGCMapUrlEngine.cpp | 38 ++----------------- .../QGeoTiledMappingManagerEngineQGC.cpp | 20 +--------- 7 files changed, 30 insertions(+), 78 deletions(-) diff --git a/src/QtLocationPlugin/BingMapProvider.cpp b/src/QtLocationPlugin/BingMapProvider.cpp index 59a281338..7980e6d28 100644 --- a/src/QtLocationPlugin/BingMapProvider.cpp +++ b/src/QtLocationPlugin/BingMapProvider.cpp @@ -5,9 +5,9 @@ #endif #include "QGCMapEngine.h" -BingMapProvider::BingMapProvider(quint32 averageSize, +BingMapProvider::BingMapProvider(QString imageFormat, quint32 averageSize, QGeoMapType::MapStyle mapType, QObject* parent) - : MapProvider(QString("https://www.bing.com/maps/"), QString("png"), + : MapProvider(QString("https://www.bing.com/maps/"), imageFormat, averageSize, mapType, parent) {} BingMapProvider::~BingMapProvider() {} diff --git a/src/QtLocationPlugin/BingMapProvider.h b/src/QtLocationPlugin/BingMapProvider.h index 933cfebe7..8b8fa6841 100644 --- a/src/QtLocationPlugin/BingMapProvider.h +++ b/src/QtLocationPlugin/BingMapProvider.h @@ -12,8 +12,8 @@ class BingMapProvider : public MapProvider { Q_OBJECT public: - BingMapProvider(quint32 averageSize, QGeoMapType::MapStyle mapType, - QObject* parent); + BingMapProvider(QString imageFormat, quint32 averageSize, + QGeoMapType::MapStyle mapType, QObject* parent); ~BingMapProvider(); @@ -35,7 +35,7 @@ class BingRoadMapProvider : public BingMapProvider { Q_OBJECT public: BingRoadMapProvider(QObject* parent) - : BingMapProvider(AVERAGE_BING_STREET_MAP, QGeoMapType::StreetMap, + : BingMapProvider(QString("png"), AVERAGE_BING_STREET_MAP, QGeoMapType::StreetMap, parent) {} protected: @@ -50,7 +50,7 @@ class BingSatelliteMapProvider : public BingMapProvider { Q_OBJECT public: BingSatelliteMapProvider(QObject* parent) - : BingMapProvider(AVERAGE_BING_SAT_MAP, QGeoMapType::SatelliteMapDay, + : BingMapProvider(QString("jpg"), AVERAGE_BING_SAT_MAP, QGeoMapType::SatelliteMapDay, parent) {} protected: @@ -65,7 +65,7 @@ class BingHybridMapProvider : public BingMapProvider { Q_OBJECT public: BingHybridMapProvider(QObject* parent) - : BingMapProvider(AVERAGE_BING_SAT_MAP, QGeoMapType::HybridMap, + : BingMapProvider(QString("jpg"),AVERAGE_BING_SAT_MAP, QGeoMapType::HybridMap, parent) {} protected: diff --git a/src/QtLocationPlugin/GoogleMapProvider.cpp b/src/QtLocationPlugin/GoogleMapProvider.cpp index 175fbbc38..ba2d6bd85 100644 --- a/src/QtLocationPlugin/GoogleMapProvider.cpp +++ b/src/QtLocationPlugin/GoogleMapProvider.cpp @@ -5,10 +5,11 @@ #endif #include "QGCMapEngine.h" - -GoogleMapProvider::GoogleMapProvider(quint32 averageSize, QGeoMapType::MapStyle mapType ,QObject* parent) - : MapProvider(QString("https://www.google.com/maps/preview"), - QString("png"), averageSize, mapType, parent), +GoogleMapProvider::GoogleMapProvider(QString imageFormat, quint32 averageSize, + QGeoMapType::MapStyle mapType, + QObject* parent) + : MapProvider(QString("https://www.google.com/maps/preview"), imageFormat, + averageSize, mapType, parent), _googleVersionRetrieved(false), _googleReply(nullptr) { // Google version strings @@ -122,8 +123,9 @@ void GoogleMapProvider::_tryCorrectGoogleVersions( } } -QString GoogleStreetMapProvider::_getURL(int x, int y, int zoom, - QNetworkAccessManager* networkManager) { +QString +GoogleStreetMapProvider::_getURL(int x, int y, int zoom, + QNetworkAccessManager* networkManager) { // http://mt1.google.com/vt/lyrs=m QString server = "mt"; QString request = "vt"; diff --git a/src/QtLocationPlugin/GoogleMapProvider.h b/src/QtLocationPlugin/GoogleMapProvider.h index 154bb883d..e548fe0f9 100644 --- a/src/QtLocationPlugin/GoogleMapProvider.h +++ b/src/QtLocationPlugin/GoogleMapProvider.h @@ -12,8 +12,8 @@ class GoogleMapProvider : public MapProvider { Q_OBJECT public: - GoogleMapProvider(quint32 averageSize, QGeoMapType::MapStyle mapType, - QObject* parent); + GoogleMapProvider(QString imageFormat, quint32 averageSize, + QGeoMapType::MapStyle mapType, QObject* parent); ~GoogleMapProvider(); @@ -67,8 +67,8 @@ class GoogleStreetMapProvider : public GoogleMapProvider { Q_OBJECT public: GoogleStreetMapProvider(QObject* parent) - : GoogleMapProvider(AVERAGE_GOOGLE_STREET_MAP, QGeoMapType::StreetMap, - parent) {} + : GoogleMapProvider(QString("png"), AVERAGE_GOOGLE_STREET_MAP, + QGeoMapType::StreetMap, parent) {} protected: QString _getURL(int x, int y, int zoom, @@ -82,7 +82,7 @@ class GoogleSatelliteMapProvider : public GoogleMapProvider { Q_OBJECT public: GoogleSatelliteMapProvider(QObject* parent) - : GoogleMapProvider(AVERAGE_GOOGLE_SAT_MAP, + : GoogleMapProvider(QString("jpg"), AVERAGE_GOOGLE_SAT_MAP, QGeoMapType::SatelliteMapDay, parent) {} protected: @@ -97,8 +97,8 @@ class GoogleLabelsMapProvider : public GoogleMapProvider { Q_OBJECT public: GoogleLabelsMapProvider(QObject* parent) - : GoogleMapProvider(AVERAGE_TILE_SIZE, QGeoMapType::CustomMap, parent) { - } + : GoogleMapProvider(QString("png"), AVERAGE_TILE_SIZE, + QGeoMapType::CustomMap, parent) {} protected: QString _getURL(int x, int y, int zoom, @@ -112,8 +112,8 @@ class GoogleTerrainMapProvider : public GoogleMapProvider { Q_OBJECT public: GoogleTerrainMapProvider(QObject* parent) - : GoogleMapProvider(AVERAGE_GOOGLE_TERRAIN_MAP, QGeoMapType::TerrainMap, - parent) {} + : GoogleMapProvider(QString("png"), AVERAGE_GOOGLE_TERRAIN_MAP, + QGeoMapType::TerrainMap, parent) {} protected: QString _getURL(int x, int y, int zoom, diff --git a/src/QtLocationPlugin/QGCMapEngine.cpp b/src/QtLocationPlugin/QGCMapEngine.cpp index 926c52839..f4896febe 100644 --- a/src/QtLocationPlugin/QGCMapEngine.cpp +++ b/src/QtLocationPlugin/QGCMapEngine.cpp @@ -287,14 +287,14 @@ QGCMapEngine::cacheTile(QString type, const QString& hash, const QByteArray& ima QString QGCMapEngine::getTileHash(QString type, int x, int y, int z) { - return QString().sprintf("%09d%08d%08d%03d", getQGCMapEngine()->urlFactory()->getIdFromType(type), x, y, z); + return QString().sprintf("%010d%08d%08d%03d", getQGCMapEngine()->urlFactory()->getIdFromType(type), x, y, z); } //----------------------------------------------------------------------------- QString QGCMapEngine::hashToType(const QString& hash) { - QString type = hash.mid(0,9); + QString type = hash.mid(0,10); return urlFactory()->getTypeFromId(type.toInt()); } diff --git a/src/QtLocationPlugin/QGCMapUrlEngine.cpp b/src/QtLocationPlugin/QGCMapUrlEngine.cpp index ab2a845b8..45f139626 100644 --- a/src/QtLocationPlugin/QGCMapUrlEngine.cpp +++ b/src/QtLocationPlugin/QGCMapUrlEngine.cpp @@ -428,46 +428,14 @@ UrlFactory::_getURL(QString type, int x, int y, int zoom, QNetworkAccessManager* //----------------------------------------------------------------------------- quint32 UrlFactory::averageSizeForType(QString type) { - qDebug() << "UrlFactory::averageSizeForType for" << type; if (_providersTable.find(type) != _providersTable.end()) { return _providersTable[type]->getAverageSize(); } - qDebug() << "UrlFactory::averageSizeForType " << type - << " Not registered"; - - // switch (type) { - // case GoogleMap: - // return AVERAGE_GOOGLE_STREET_MAP; - // case BingMap: - // return AVERAGE_BING_STREET_MAP; - // case GoogleSatellite: - // return AVERAGE_GOOGLE_SAT_MAP; - // case MapboxSatellite: - // return AVERAGE_MAPBOX_SAT_MAP; - // case BingHybrid: - // case BingSatellite: - // return AVERAGE_BING_SAT_MAP; - // case GoogleTerrain: - // return AVERAGE_GOOGLE_TERRAIN_MAP; - // case MapboxStreets: - // case MapboxStreetsBasic: - // case MapboxRunBikeHike: - // return AVERAGE_MAPBOX_STREET_MAP; + qCDebug(QGCMapUrlEngineLog) << "UrlFactory::averageSizeForType " << type + << " Not registeret"; + // case AirmapElevation: // return AVERAGE_AIRMAP_ELEV_SIZE; - // case GoogleLabels: - // case MapboxDark: - // case MapboxLight: - // case MapboxOutdoors: - // case MapboxPencil: - // case OpenStreetMap: - // case GoogleHybrid: - // case MapboxComic: - // case MapboxEmerald: - // case MapboxHighContrast: - // case MapboxHybrid: - // case MapboxPirates: - // case MapboxWheatPaste: // default: // break; // } diff --git a/src/QtLocationPlugin/QGeoTiledMappingManagerEngineQGC.cpp b/src/QtLocationPlugin/QGeoTiledMappingManagerEngineQGC.cpp index 5b04b1645..cded61086 100644 --- a/src/QtLocationPlugin/QGeoTiledMappingManagerEngineQGC.cpp +++ b/src/QtLocationPlugin/QGeoTiledMappingManagerEngineQGC.cpp @@ -126,25 +126,7 @@ QGeoTiledMappingManagerEngineQGC::QGeoTiledMappingManagerEngineQGC(const QVarian // QGCGEOMAPTYPE(QGeoMapType::SatelliteMapDay, "MapQuest Satellite Map", "MapQuest satellite map", false, false, UrlFactory::MapQuestSat), // */ // -// /* -// * These are OK as you need your own token for accessing it. Out-of-the box, QGC does not even offer these unless you enter a proper Mapbox token. -// */ -// -// QGCGEOMAPTYPE(QGeoMapType::StreetMap, "Mapbox Street Map", "Mapbox Street Map", false, false, UrlFactory::MapboxStreets), -// QGCGEOMAPTYPE(QGeoMapType::SatelliteMapDay, "Mapbox Satellite Map", "Mapbox Satellite Map", false, false, UrlFactory::MapboxSatellite), -// QGCGEOMAPTYPE(QGeoMapType::CustomMap, "Mapbox High Contrast Map", "Mapbox High Contrast Map", false, false, UrlFactory::MapboxHighContrast), -// QGCGEOMAPTYPE(QGeoMapType::CustomMap, "Mapbox Light Map", "Mapbox Light Map", false, false, UrlFactory::MapboxLight), -// QGCGEOMAPTYPE(QGeoMapType::CustomMap, "Mapbox Dark Map", "Mapbox Dark Map", false, false, UrlFactory::MapboxDark), -// QGCGEOMAPTYPE(QGeoMapType::HybridMap, "Mapbox Hybrid Map", "Mapbox Hybrid Map", false, false, UrlFactory::MapboxHybrid), -// QGCGEOMAPTYPE(QGeoMapType::CustomMap, "Mapbox Wheat Paste Map", "Mapbox Wheat Paste Map", false, false, UrlFactory::MapboxWheatPaste), -// QGCGEOMAPTYPE(QGeoMapType::StreetMap, "Mapbox Streets Basic Map", "Mapbox Streets Basic Map", false, false, UrlFactory::MapboxStreetsBasic), -// QGCGEOMAPTYPE(QGeoMapType::CustomMap, "Mapbox Comic Map", "Mapbox Comic Map", false, false, UrlFactory::MapboxComic), -// QGCGEOMAPTYPE(QGeoMapType::CustomMap, "Mapbox Outdoors Map", "Mapbox Outdoors Map", false, false, UrlFactory::MapboxOutdoors), -// QGCGEOMAPTYPE(QGeoMapType::CycleMap, "Mapbox Run, Byke and Hike Map", "Mapbox Run, Byke and Hike Map", false, false, UrlFactory::MapboxRunBikeHike), -// QGCGEOMAPTYPE(QGeoMapType::CustomMap, "Mapbox Pencil Map", "Mapbox Pencil Map", false, false, UrlFactory::MapboxPencil), -// QGCGEOMAPTYPE(QGeoMapType::CustomMap, "Mapbox Pirates Map", "Mapbox Pirates Map", false, false, UrlFactory::MapboxPirates), -// QGCGEOMAPTYPE(QGeoMapType::CustomMap, "Mapbox Emerald Map", "Mapbox Emerald Map", false, false, UrlFactory::MapboxEmerald), -// }); + //-- Users (QML code) can define a different user agent if (parameters.contains(QStringLiteral("useragent"))) { -- 2.22.0