diff --git a/src/QtLocationPlugin/GenericMapProvider.cpp b/src/QtLocationPlugin/GenericMapProvider.cpp index 5b9e08dcd9e724fc4324d1645f27d74da290d878..cf95fc32ac82418782fa542f2a4c23cfb7e433c3 100644 --- a/src/QtLocationPlugin/GenericMapProvider.cpp +++ b/src/QtLocationPlugin/GenericMapProvider.cpp @@ -8,6 +8,41 @@ ****************************************************************************/ #include "GenericMapProvider.h" +static const QString JapanStdMapUrl = QStringLiteral("https://cyberjapandata.gsi.go.jp/xyz/std/%1/%2/%3.png"); + +QString JapanStdMapProvider::_getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) { + Q_UNUSED(networkManager) + return JapanStdMapUrl.arg(zoom).arg(x).arg(y); +} + +static const QString JapanSeamlessMapUrl = QStringLiteral("https://cyberjapandata.gsi.go.jp/xyz/seamlessphoto/%1/%2/%3.jpg"); + +QString JapanSeamlessMapProvider::_getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) { + Q_UNUSED(networkManager) + return JapanSeamlessMapUrl.arg(zoom).arg(x).arg(y); +} + +static const QString JapanAnaglyphMapUrl = QStringLiteral("https://cyberjapandata.gsi.go.jp/xyz/anaglyphmap_color/%1/%2/%3.png"); + +QString JapanAnaglyphMapProvider::_getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) { + Q_UNUSED(networkManager) + return JapanAnaglyphMapUrl.arg(zoom).arg(x).arg(y); +} + +static const QString JapanSlopeMapUrl = QStringLiteral("https://cyberjapandata.gsi.go.jp/xyz/slopemap/%1/%2/%3.png"); + +QString JapanSlopeMapProvider::_getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) { + Q_UNUSED(networkManager) + return JapanSlopeMapUrl.arg(zoom).arg(x).arg(y); +} + +static const QString JapanReliefMapUrl = QStringLiteral("https://cyberjapandata.gsi.go.jp/xyz/relief/%1/%2/%3.png"); + +QString JapanReliefMapProvider::_getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) { + Q_UNUSED(networkManager) + return JapanReliefMapUrl.arg(zoom).arg(x).arg(y); +} + static const QString StatkartMapUrl = QStringLiteral("http://opencache.statkart.no/gatekeeper/gk/gk.open_gmaps?layers=topo4&zoom=%1&x=%2&y=%3"); QString StatkartMapProvider::_getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) { diff --git a/src/QtLocationPlugin/GenericMapProvider.h b/src/QtLocationPlugin/GenericMapProvider.h index 746027afbcd6038558dc698cd30ae0b0e50fdb18..82fd9a57180f211ba31a8dc4fdf733fbb3a5954c 100644 --- a/src/QtLocationPlugin/GenericMapProvider.h +++ b/src/QtLocationPlugin/GenericMapProvider.h @@ -10,6 +10,56 @@ #include "MapProvider.h" +class JapanStdMapProvider : public MapProvider { + Q_OBJECT + public: + JapanStdMapProvider(QObject* parent = nullptr) + : MapProvider(QStringLiteral("https://cyberjapandata.gsi.go.jp/xyz/std"), QStringLiteral("png"), + AVERAGE_TILE_SIZE, QGeoMapType::StreetMap, parent) {} + + QString _getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) override; +}; + +class JapanSeamlessMapProvider : public MapProvider { + Q_OBJECT + public: + JapanSeamlessMapProvider(QObject* parent = nullptr) + : MapProvider(QStringLiteral("https://cyberjapandata.gsi.go.jp/xyz/seamlessphoto"), QStringLiteral("jpg"), + AVERAGE_TILE_SIZE, QGeoMapType::StreetMap, parent) {} + + QString _getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) override; +}; + +class JapanAnaglyphMapProvider : public MapProvider { + Q_OBJECT + public: + JapanAnaglyphMapProvider(QObject* parent = nullptr) + : MapProvider(QStringLiteral("https://cyberjapandata.gsi.go.jp/xyz/anaglyphmap_color"), QStringLiteral("png"), + AVERAGE_TILE_SIZE, QGeoMapType::StreetMap, parent) {} + + QString _getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) override; +}; + +class JapanSlopeMapProvider : public MapProvider { + Q_OBJECT + public: + JapanSlopeMapProvider(QObject* parent = nullptr) + : MapProvider(QStringLiteral("https://cyberjapandata.gsi.go.jp/xyz/slopemap"), QStringLiteral("png"), + AVERAGE_TILE_SIZE, QGeoMapType::StreetMap, parent) {} + + QString _getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) override; +}; + +class JapanReliefMapProvider : public MapProvider { + Q_OBJECT + public: + JapanReliefMapProvider(QObject* parent = nullptr) + : MapProvider(QStringLiteral("https://cyberjapandata.gsi.go.jp/xyz/relief"), QStringLiteral("png"), + AVERAGE_TILE_SIZE, QGeoMapType::StreetMap, parent) {} + + QString _getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) override; +}; + class StatkartMapProvider : public MapProvider { Q_OBJECT public: diff --git a/src/QtLocationPlugin/QGCMapUrlEngine.cpp b/src/QtLocationPlugin/QGCMapUrlEngine.cpp index 2d26b8ab2d20aeb6dee92e39c49b34e0b5230e42..0b5698be3609160014d01a01b06ac736fb61639f 100644 --- a/src/QtLocationPlugin/QGCMapUrlEngine.cpp +++ b/src/QtLocationPlugin/QGCMapUrlEngine.cpp @@ -76,6 +76,12 @@ UrlFactory::UrlFactory() : _timeout(5 * 1000) { _providersTable["VWorld Satellite Map"] = new VWorldSatMapProvider(this); _providersTable["Airmap Elevation"] = new AirmapElevationProvider(this); + + _providersTable["Japan-GSI Contour"] = new JapanStdMapProvider(this); + _providersTable["Japan-GSI Seamless"] = new JapanSeamlessMapProvider(this); + _providersTable["Japan-GSI Anaglyph"] = new JapanAnaglyphMapProvider(this); + _providersTable["Japan-GSI Slope"] = new JapanSlopeMapProvider(this); + _providersTable["Japan-GSI Relief"] = new JapanReliefMapProvider(this); } void UrlFactory::registerProvider(QString name, MapProvider* provider) {