diff --git a/src/QtLocationPlugin/GoogleMapProvider.cpp b/src/QtLocationPlugin/GoogleMapProvider.cpp index fd3fcf8e639222dbb4789ee1cd5c0836e87eca83..bc2e89259b8100f6ca4bf02c783e6190925dabe7 100644 --- a/src/QtLocationPlugin/GoogleMapProvider.cpp +++ b/src/QtLocationPlugin/GoogleMapProvider.cpp @@ -5,7 +5,7 @@ #endif #include "QGCMapEngine.h" -#define AVERAGE_GOOGLE_STREET_MAP 4913 +#define AVERAGE_GOOGLE_STREET_MAP 4913 GoogleMapProvider::GoogleMapProvider(QObject* parent) : MapProvider(QString("https://www.google.com/maps/preview"), @@ -18,10 +18,9 @@ GoogleMapProvider::GoogleMapProvider(QObject* parent) _versionGoogleLabels = "h@336"; _versionGoogleTerrain = "t@354,r@354000000"; _secGoogleWord = "Galileo"; - } -quint32 GoogleMapProvider::getAverageSize(){ +quint32 GoogleMapProvider::getAverageSize() { return quint32(AVERAGE_GOOGLE_STREET_MAP); } @@ -32,7 +31,7 @@ GoogleMapProvider::~GoogleMapProvider() { //----------------------------------------------------------------------------- void GoogleMapProvider::_getSecGoogleWords(int x, int y, QString& sec1, - QString& sec2) { + QString& sec2) { sec1 = ""; // after &x=... sec2 = ""; // after &zoom=... int seclen = ((x * 3) + y) % 8; @@ -93,7 +92,6 @@ void GoogleMapProvider::_googleVersionCompleted() { _googleReply = nullptr; } -//----------------------------------------------------------------------------- void GoogleMapProvider::_tryCorrectGoogleVersions( QNetworkAccessManager* networkManager) { QMutexLocker locker(&_googleVersionMutex); @@ -128,10 +126,9 @@ void GoogleMapProvider::_tryCorrectGoogleVersions( networkManager->setProxy(proxy); } } -// -//----------------------------------------------------------------------------- + QString GoogleMapProvider::_getURL(int x, int y, int zoom, - QNetworkAccessManager* networkManager) { + QNetworkAccessManager* networkManager) { // http://mt1.google.com/vt/lyrs=m QString server = "mt"; QString request = "vt"; @@ -151,78 +148,11 @@ QString GoogleMapProvider::_getURL(int x, int y, int zoom, .arg(y) .arg(zoom) .arg(sec2); -//} break; -//case GoogleSatellite: { -// // http://mt1.google.com/vt/lyrs=s -// QString server = "khm"; -// QString request = "kh"; -// QString sec1 = ""; // after &x=... -// QString sec2 = ""; // after &zoom=... -// _getSecGoogleWords(x, y, sec1, sec2); -// _tryCorrectGoogleVersions(networkManager); -// return QString( -// "http://%1%2.google.com/%3/v=%4&hl=%5&x=%6%7&y=%8&z=%9&s=%10") -// .arg(server) -// .arg(_getServerNum(x, y, 4)) -// .arg(request) -// .arg(_versionGoogleSatellite) -// .arg(_language) -// .arg(x) -// .arg(sec1) -// .arg(y) -// .arg(zoom) -// .arg(sec2); -//} break; -//case GoogleLabels: { -// QString server = "mts"; -// 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(_versionGoogleLabels) -// .arg(_language) -// .arg(x) -// .arg(sec1) -// .arg(y) -// .arg(zoom) -// .arg(sec2); -//} break; -//case GoogleTerrain: { -// 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/v=%4&hl=%5&x=%6%7&y=%8&z=%9&s=%10") -// .arg(server) -// .arg(_getServerNum(x, y, 4)) -// .arg(request) -// .arg(_versionGoogleTerrain) -// .arg(_language) -// .arg(x) -// .arg(sec1) -// .arg(y) -// .arg(zoom) -// .arg(sec2); -//} break; -//default: -// qWarning("Unknown map id %d\n", type); -// break; -//} -//return {}; } -QString GoogleSatelliteMapProvider::_getURL(int x, int y, int zoom, - QNetworkAccessManager* networkManager) { - qDebug()<< "Yohou"; +QString +GoogleSatelliteMapProvider::_getURL(int x, int y, int zoom, + QNetworkAccessManager* networkManager) { // http://mt1.google.com/vt/lyrs=s QString server = "khm"; QString request = "kh"; @@ -243,3 +173,49 @@ QString GoogleSatelliteMapProvider::_getURL(int x, int y, int zoom, .arg(zoom) .arg(sec2); } + +QString +GoogleLabelsMapProvider::_getURL(int x, int y, int zoom, + QNetworkAccessManager* networkManager) { + QString server = "mts"; + 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(_versionGoogleLabels) + .arg(_language) + .arg(x) + .arg(sec1) + .arg(y) + .arg(zoom) + .arg(sec2); +} + +QString +GoogleTerrainMapProvider::_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/v=%4&hl=%5&x=%6%7&y=%8&z=%9&s=%10") + .arg(server) + .arg(_getServerNum(x, y, 4)) + .arg(request) + .arg(_versionGoogleTerrain) + .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 f81509f4529439eace61be3542ac89865541c34c..d5af063d52d4c5b723996c37a2167f2d11b653a8 100644 --- a/src/QtLocationPlugin/GoogleMapProvider.h +++ b/src/QtLocationPlugin/GoogleMapProvider.h @@ -51,3 +51,21 @@ class GoogleSatelliteMapProvider : public GoogleMapProvider { QString _getURL(int x, int y, int zoom, QNetworkAccessManager* networkManager); }; + +class GoogleLabelsMapProvider : public GoogleMapProvider { + Q_OBJECT + public: + GoogleLabelsMapProvider(QObject* parent):GoogleMapProvider(parent){} + protected: + QString _getURL(int x, int y, int zoom, + QNetworkAccessManager* networkManager); +}; + +class GoogleTerrainMapProvider : public GoogleMapProvider { + Q_OBJECT + public: + GoogleTerrainMapProvider(QObject* parent):GoogleMapProvider(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 063ce951e83b509ad9865adeb1f1269290b9461e..58f528c253ef683a42d1e320d654323b33ae16dc 100644 --- a/src/QtLocationPlugin/QGCMapUrlEngine.cpp +++ b/src/QtLocationPlugin/QGCMapUrlEngine.cpp @@ -45,10 +45,11 @@ UrlFactory::UrlFactory() // BingMaps //_versionBingMaps = "563"; - #ifndef QGC_NO_GOOGLE_MAPS - _googleMapProvider = new GoogleSatelliteMapProvider(this); + _providersTable["GoogleStreet"] = new GoogleMapProvider(this); + _providersTable["GoogleSatellite"] = new GoogleSatelliteMapProvider(this); #endif + _curMapProvider = _providersTable["GoogleStreet"]; } //----------------------------------------------------------------------------- @@ -62,7 +63,7 @@ QString UrlFactory::getImageFormat(MapType type, const QByteArray& image) { Q_UNUSED(type); - return _googleMapProvider->getImageFormat(image); + return _curMapProvider->getImageFormat(image); //QString format; //if(image.size() > 2) //{ @@ -132,7 +133,7 @@ QNetworkRequest UrlFactory::getTileURL(MapType type, int x, int y, int zoom, QNetworkAccessManager* networkManager) { Q_UNUSED(type); - return _googleMapProvider->getTileURL(x,y,zoom,networkManager); + return _curMapProvider->getTileURL(x,y,zoom,networkManager); ////-- Build URL //QNetworkRequest request; //QString url = _getURL(type, x, y, zoom, networkManager); diff --git a/src/QtLocationPlugin/QGCMapUrlEngine.h b/src/QtLocationPlugin/QGCMapUrlEngine.h index ac20da014df0f4d4fd0ca9656872146f7737fa36..d86632b3b38305e44da062e8fc0d434b60692951 100644 --- a/src/QtLocationPlugin/QGCMapUrlEngine.h +++ b/src/QtLocationPlugin/QGCMapUrlEngine.h @@ -94,7 +94,9 @@ private: // BingMaps //QString _versionBingMaps; - GoogleMapProvider* _googleMapProvider; + MapProvider* _curMapProvider; + + QHash _providersTable; };