From 50f8db09eac37fb853a5a64b389206493f62b4d9 Mon Sep 17 00:00:00 2001 From: Andre Kjellstrup Date: Fri, 16 Sep 2016 20:26:53 +0200 Subject: [PATCH] Maps:Added Statkart Topo2 (very useful norwegian topographic map) This map is an absolute necessary for navigating the northern parts. --- src/FlightMap/FlightMapSettings.cc | 3 +++ src/QtLocationPlugin/QGCMapEngine.cpp | 2 ++ src/QtLocationPlugin/QGCMapUrlEngine.cpp | 9 +++++++++ src/QtLocationPlugin/QGCMapUrlEngine.h | 2 ++ .../QGeoTiledMappingManagerEngineQGC.cpp | 3 +++ 5 files changed, 19 insertions(+) diff --git a/src/FlightMap/FlightMapSettings.cc b/src/FlightMap/FlightMapSettings.cc index 455c86d50..462a48fef 100644 --- a/src/FlightMap/FlightMapSettings.cc +++ b/src/FlightMap/FlightMapSettings.cc @@ -32,6 +32,7 @@ void FlightMapSettings::setToolbox(QGCToolbox *toolbox) #ifndef QGC_NO_GOOGLE_MAPS _supportedMapProviders << "Google"; #endif + _supportedMapProviders << "Statkart"; _loadSettings(); } @@ -82,6 +83,8 @@ void FlightMapSettings::_setMapTypesForCurrentProvider(void) _mapTypes << "Street Map" << "Satellite Map" << "Hybrid Map"; } else if (_mapProvider == "Google") { _mapTypes << "Street Map" << "Satellite Map" << "Terrain Map"; + } else if (_mapProvider == "Statkart") { + _mapTypes << "Topo2"; } #endif emit mapTypesChanged(_mapTypes); diff --git a/src/QtLocationPlugin/QGCMapEngine.cpp b/src/QtLocationPlugin/QGCMapEngine.cpp index f36d0e6ec..38edfdc74 100644 --- a/src/QtLocationPlugin/QGCMapEngine.cpp +++ b/src/QtLocationPlugin/QGCMapEngine.cpp @@ -51,6 +51,7 @@ stQGeoTileCacheQGCMapTypes kMapTypes[] = { {"Bing Street Map", UrlFactory::BingMap}, {"Bing Satellite Map", UrlFactory::BingSatellite}, {"Bing Hybrid Map", UrlFactory::BingHybrid}, + {"Statkart Topo2", UrlFactory::StatkartTopo}, {"MapQuest Street Map", UrlFactory::MapQuestMap}, {"MapQuest Satellite Map", UrlFactory::MapQuestSat} /* @@ -463,6 +464,7 @@ QGCMapEngine::concurrentDownloads(UrlFactory::MapType type) case UrlFactory::BingMap: case UrlFactory::BingSatellite: case UrlFactory::BingHybrid: + case UrlFactory::StatkartTopo: return 12; case UrlFactory::MapQuestMap: case UrlFactory::MapQuestSat: diff --git a/src/QtLocationPlugin/QGCMapUrlEngine.cpp b/src/QtLocationPlugin/QGCMapUrlEngine.cpp index 549fa19e5..9d1adec9e 100644 --- a/src/QtLocationPlugin/QGCMapUrlEngine.cpp +++ b/src/QtLocationPlugin/QGCMapUrlEngine.cpp @@ -84,6 +84,7 @@ UrlFactory::getImageFormat(MapType type, const QByteArray& image) case GoogleHybrid: case BingMap: case OpenStreetMap: + case StatkartTopo: format = "png"; break; case MapQuestMap: @@ -143,6 +144,9 @@ UrlFactory::getTileURL(MapType type, int x, int y, int zoom, QNetworkAccessManag case BingSatellite: request.setRawHeader("Referrer", "https://www.bing.com/maps/"); break; + case StatkartTopo: + request.setRawHeader("Referrer", "https://www.norgeskart.no/"); + break; /* case OpenStreetMapSurfer: case OpenStreetMapSurferTerrain: @@ -229,6 +233,11 @@ UrlFactory::_getURL(MapType type, int x, int y, int zoom, QNetworkAccessManager* } break; #endif + case StatkartTopo: + { + return QString("http://opencache.statkart.no/gatekeeper/gk/gk.open_gmaps?layers=topo2&zoom=%1&x=%2&y=%3").arg(zoom).arg(x).arg(y); + } + break; /* case OpenStreetMap: { diff --git a/src/QtLocationPlugin/QGCMapUrlEngine.h b/src/QtLocationPlugin/QGCMapUrlEngine.h index 9da7ae8b9..68634a8da 100644 --- a/src/QtLocationPlugin/QGCMapUrlEngine.h +++ b/src/QtLocationPlugin/QGCMapUrlEngine.h @@ -44,6 +44,8 @@ public: OpenStreetMapSurfer = 34, OpenStreetMapSurferTerrain=35, + StatkartTopo = 100, + BingMap = 444, BingSatellite = 555, BingHybrid = 666, diff --git a/src/QtLocationPlugin/QGeoTiledMappingManagerEngineQGC.cpp b/src/QtLocationPlugin/QGeoTiledMappingManagerEngineQGC.cpp index bf881266c..c7032bb40 100644 --- a/src/QtLocationPlugin/QGeoTiledMappingManagerEngineQGC.cpp +++ b/src/QtLocationPlugin/QGeoTiledMappingManagerEngineQGC.cpp @@ -114,6 +114,9 @@ QGeoTiledMappingManagerEngineQGC::QGeoTiledMappingManagerEngineQGC(const QVarian mapTypes << QGeoMapType(QGeoMapType::SatelliteMapDay, "Bing Satellite Map", "Bing satellite map", false, false, UrlFactory::BingSatellite); mapTypes << QGeoMapType(QGeoMapType::HybridMap, "Bing Hybrid Map", "Bing hybrid map", false, false, UrlFactory::BingHybrid); + // Statkart + mapTypes << QGeoMapType(QGeoMapType::TerrainMap, "Statkart Topo2", "Statkart Topo2", false, false, UrlFactory::StatkartTopo); + /* See: https://wiki.openstreetmap.org/wiki/Tile_usage_policy mapTypes << QGeoMapType(QGeoMapType::StreetMap, "Open Street Map", "Open Street map", false, false, UrlFactory::OpenStreetMap); */ -- 2.22.0