diff --git a/src/QtLocationPlugin/GoogleMapProvider.cpp b/src/QtLocationPlugin/GoogleMapProvider.cpp index ba2d6bd85eb4f1cfcb6916301ed0b09bb899a272..c2505dd09c963732bde158dafae58ea5325f6fc2 100644 --- a/src/QtLocationPlugin/GoogleMapProvider.cpp +++ b/src/QtLocationPlugin/GoogleMapProvider.cpp @@ -17,6 +17,7 @@ GoogleMapProvider::GoogleMapProvider(QString imageFormat, quint32 averageSize, _versionGoogleSatellite = "692"; _versionGoogleLabels = "h@336"; _versionGoogleTerrain = "t@354,r@354000000"; + _versionGoogleHybrid = "y"; _secGoogleWord = "Galileo"; } @@ -216,3 +217,26 @@ GoogleTerrainMapProvider::_getURL(int x, int y, int zoom, .arg(zoom) .arg(sec2); } + +QString +GoogleHybridMapProvider::_getURL(int x, int y, int zoom, + QNetworkAccessManager* networkManager) { + QString server = "mt"; + QString request = "vt"; + QString sec1 = ""; // after &x=... + QString sec2 = ""; // after &zoom=... + _getSecGoogleWords(x, y, sec1, sec2); + _tryCorrectGoogleVersions(networkManager); + return QString( + "http://%1%2.google.com/%3/lyrs=%4&hl=%5&x=%6%7&y=%8&z=%9&s=%10") + .arg(server) + .arg(_getServerNum(x, y, 4)) + .arg(request) + .arg(_versionGoogleHybrid) + .arg(_language) + .arg(x) + .arg(sec1) + .arg(y) + .arg(zoom) + .arg(sec2); +} diff --git a/src/QtLocationPlugin/GoogleMapProvider.h b/src/QtLocationPlugin/GoogleMapProvider.h index e548fe0f9fe2ee1a7d112cb6e35f45646a97e905..40921ea4b21d57e0396ac0c4fb58da0a0d45608c 100644 --- a/src/QtLocationPlugin/GoogleMapProvider.h +++ b/src/QtLocationPlugin/GoogleMapProvider.h @@ -40,6 +40,7 @@ class GoogleMapProvider : public MapProvider { QString _versionGoogleSatellite; QString _versionGoogleLabels; QString _versionGoogleTerrain; + QString _versionGoogleHybrid; QString _secGoogleWord; }; @@ -119,3 +120,18 @@ class GoogleTerrainMapProvider : public GoogleMapProvider { QString _getURL(int x, int y, int zoom, QNetworkAccessManager* networkManager); }; + +// ----------------------------------------------------------- +// Google Hybrid Map + +class GoogleHybridMapProvider : public GoogleMapProvider { + Q_OBJECT + public: + GoogleHybridMapProvider(QObject* parent) + : GoogleMapProvider(QString("png"), AVERAGE_GOOGLE_SAT_MAP, + QGeoMapType::HybridMap, parent) {} + + protected: + QString _getURL(int x, int y, int zoom, + QNetworkAccessManager* networkManager); +}; diff --git a/src/QtLocationPlugin/QGCMapUrlEngine.cpp b/src/QtLocationPlugin/QGCMapUrlEngine.cpp index 2b3cafbf5f8200cb7c466a9b6bf629871e38ae2e..76eed0bc03d7971bfbeec592a7906de1ca24dc3f 100644 --- a/src/QtLocationPlugin/QGCMapUrlEngine.cpp +++ b/src/QtLocationPlugin/QGCMapUrlEngine.cpp @@ -41,6 +41,7 @@ UrlFactory::UrlFactory() : _timeout(5 * 1000) { _providersTable["Google Street Map"] = new GoogleStreetMapProvider(this); _providersTable["Google Satellite"] = new GoogleSatelliteMapProvider(this); _providersTable["Google Terrain"] = new GoogleTerrainMapProvider(this); + _providersTable["Google Hybrid"] = new GoogleHybridMapProvider(this); _providersTable["Google Labels"] = new GoogleTerrainMapProvider(this); #endif