Commit 8313f8e8 authored by Pierre TILAK's avatar Pierre TILAK

Add Statkart

parent 34abc516
#include "BingMapProvider.h"
#if defined(DEBUG_GOOGLE_MAPS)
#include <QFile>
#include <QStandardPaths>
#endif
#include "QGCMapEngine.h"
BingMapProvider::BingMapProvider(quint32 averageSize,
QGeoMapType::MapStyle mapType, QObject* parent)
: MapProvider(QString("https://www.bing.com/maps/"), QString("png"),
averageSize, mapType, parent) {}
BingMapProvider::~BingMapProvider() {}
QString BingRoadMapProvider::_getURL(int x, int y, int zoom,
QNetworkAccessManager* networkManager) {
Q_UNUSED(networkManager);
QString key = _tileXYToQuadKey(x, y, zoom);
return QString("http://ecn.t%1.tiles.virtualearth.net/tiles/"
"r%2.png?g=%3&mkt=%4")
.arg(_getServerNum(x, y, 4))
.arg(key)
.arg(_versionBingMaps)
.arg(_language);
}
QString
BingSatelliteMapProvider::_getURL(int x, int y, int zoom,
QNetworkAccessManager* networkManager) {
Q_UNUSED(networkManager);
QString key = _tileXYToQuadKey(x, y, zoom);
return QString("http://ecn.t%1.tiles.virtualearth.net/tiles/"
"a%2.jpeg?g=%3&mkt=%4")
.arg(_getServerNum(x, y, 4))
.arg(key)
.arg(_versionBingMaps)
.arg(_language);
}
QString BingHybridMapProvider::_getURL(int x, int y, int zoom,
QNetworkAccessManager* networkManager) {
Q_UNUSED(networkManager);
QString key = _tileXYToQuadKey(x, y, zoom);
return QString("http://ecn.t%1.tiles.virtualearth.net/tiles/"
"h%2.jpeg?g=%3&mkt=%4")
.arg(_getServerNum(x, y, 4))
.arg(key)
.arg(_versionBingMaps)
.arg(_language);
}
#pragma once
#include "MapProvider.h"
#include <QByteArray>
#include <QMutex>
#include <QNetworkProxy>
#include <QNetworkReply>
#include <QPoint>
#include <QString>
class BingMapProvider : public MapProvider {
Q_OBJECT
public:
BingMapProvider(quint32 averageSize, QGeoMapType::MapStyle mapType,
QObject* parent);
~BingMapProvider();
protected:
// Define the url to Request
virtual QString _getURL(int x, int y, int zoom,
QNetworkAccessManager* networkManager) = 0;
const QString _versionBingMaps = "563";
};
const quint32 AVERAGE_BING_STREET_MAP = 1297;
const quint32 AVERAGE_BING_SAT_MAP = 19597;
// -----------------------------------------------------------
// Bing Road Map
class BingRoadMapProvider : public BingMapProvider {
Q_OBJECT
public:
BingRoadMapProvider(QObject* parent)
: BingMapProvider(AVERAGE_BING_STREET_MAP, QGeoMapType::StreetMap,
parent) {}
protected:
QString _getURL(int x, int y, int zoom,
QNetworkAccessManager* networkManager);
};
// -----------------------------------------------------------
// Bing Satellite Map
class BingSatelliteMapProvider : public BingMapProvider {
Q_OBJECT
public:
BingSatelliteMapProvider(QObject* parent)
: BingMapProvider(AVERAGE_BING_SAT_MAP, QGeoMapType::SatelliteMapDay,
parent) {}
protected:
QString _getURL(int x, int y, int zoom,
QNetworkAccessManager* networkManager);
};
// -----------------------------------------------------------
// Bing Hybrid Map
class BingHybridMapProvider : public BingMapProvider {
Q_OBJECT
public:
BingHybridMapProvider(QObject* parent)
: BingMapProvider(AVERAGE_BING_SAT_MAP, QGeoMapType::HybridMap,
parent) {}
protected:
QString _getURL(int x, int y, int zoom,
QNetworkAccessManager* networkManager);
};
...@@ -19,18 +19,18 @@ const quint32 AVERAGE_AIRMAP_ELEV_SIZE = 2786; ...@@ -19,18 +19,18 @@ const quint32 AVERAGE_AIRMAP_ELEV_SIZE = 2786;
class MapProvider : public QObject { class MapProvider : public QObject {
Q_OBJECT Q_OBJECT
public: public:
MapProvider( MapProvider(QString referrer, QString imageFormat, quint32 averageSize,
QString referrer, QString imageFormat, quint32 averageSize, QGeoMapType::MapStyle _mapType = QGeoMapType::CustomMap,
QGeoMapType::MapStyle _mapType = QGeoMapType::CustomMap, QObject* parent = nullptr); QObject* parent = nullptr);
QNetworkRequest getTileURL(int x, int y, int zoom, QNetworkRequest getTileURL(int x, int y, int zoom,
QNetworkAccessManager* networkManager); QNetworkAccessManager* networkManager);
QString getImageFormat(const QByteArray& image); QString getImageFormat(const QByteArray& image);
quint32 getAverageSize(){return _averageSize;} quint32 getAverageSize() { return _averageSize; }
QGeoMapType::MapStyle getMapStyle(){return _mapType;} QGeoMapType::MapStyle getMapStyle() { return _mapType; }
protected: protected:
QString _tileXYToQuadKey(int tileX, int tileY, int levelOfDetail); QString _tileXYToQuadKey(int tileX, int tileY, int levelOfDetail);
......
...@@ -25,6 +25,7 @@ HEADERS += \ ...@@ -25,6 +25,7 @@ HEADERS += \
$$PWD/MapProvider.h \ $$PWD/MapProvider.h \
$$PWD/GoogleMapProvider.h \ $$PWD/GoogleMapProvider.h \
$$PWD/BingMapProvider.h \ $$PWD/BingMapProvider.h \
$$PWD/StatkartMapProvider.h \
SOURCES += \ SOURCES += \
$$PWD/QGCMapEngine.cpp \ $$PWD/QGCMapEngine.cpp \
...@@ -40,6 +41,7 @@ SOURCES += \ ...@@ -40,6 +41,7 @@ SOURCES += \
$$PWD/MapProvider.cpp \ $$PWD/MapProvider.cpp \
$$PWD/GoogleMapProvider.cpp \ $$PWD/GoogleMapProvider.cpp \
$$PWD/BingMapProvider.cpp \ $$PWD/BingMapProvider.cpp \
$$PWD/StatkartMapProvider.cpp \
OTHER_FILES += \ OTHER_FILES += \
$$PWD/qgc_maps_plugin.json $$PWD/qgc_maps_plugin.json
...@@ -48,6 +48,8 @@ UrlFactory::UrlFactory() : _timeout(5 * 1000) { ...@@ -48,6 +48,8 @@ UrlFactory::UrlFactory() : _timeout(5 * 1000) {
_providersTable["Bing Road"] = new BingRoadMapProvider(this); _providersTable["Bing Road"] = new BingRoadMapProvider(this);
_providersTable["Bing Satellite"] = new BingSatelliteMapProvider(this); _providersTable["Bing Satellite"] = new BingSatelliteMapProvider(this);
_providersTable["Bing Hybrid"] = new BingHybridMapProvider(this); _providersTable["Bing Hybrid"] = new BingHybridMapProvider(this);
_providersTable["Statkart Topo"] = new StatkartMapProvider(this);
} }
void UrlFactory::registerProvider(QString name, MapProvider* provider) { void UrlFactory::registerProvider(QString name, MapProvider* provider) {
...@@ -88,11 +90,6 @@ QString UrlFactory::getImageFormat(QString type, const QByteArray& image) { ...@@ -88,11 +90,6 @@ QString UrlFactory::getImageFormat(QString type, const QByteArray& image) {
// format = "gif"; // format = "gif";
// else { // else {
// switch (type) { // switch (type) {
// case GoogleMap:
// case GoogleLabels:
// case GoogleTerrain:
// case GoogleHybrid:
// case BingMap:
// case StatkartTopo: // case StatkartTopo:
// format = "png"; // format = "png";
// break; // break;
......
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
#include "GoogleMapProvider.h" #include "GoogleMapProvider.h"
#include "BingMapProvider.h" #include "BingMapProvider.h"
#include "StatkartMapProvider.h"
#define MAX_MAP_ZOOM (20.0) #define MAX_MAP_ZOOM (20.0)
......
#include "StatkartMapProvider.h"
#if defined(DEBUG_GOOGLE_MAPS)
#include <QFile>
#include <QStandardPaths>
#endif
#include "QGCMapEngine.h"
StatkartMapProvider::StatkartMapProvider(QObject* parent)
: MapProvider(QString("https://www.norgeskart.no/"), QString("png"),
AVERAGE_TILE_SIZE, QGeoMapType::StreetMap, parent) {}
StatkartMapProvider::~StatkartMapProvider() {}
QString StatkartMapProvider::_getURL(int x, int y, int zoom,
QNetworkAccessManager* networkManager) {
Q_UNUSED(networkManager);
return QString("http://opencache.statkart.no/gatekeeper/gk/"
"gk.open_gmaps?layers=topo4&zoom=%1&x=%2&y=%3")
.arg(zoom)
.arg(x)
.arg(y);
}
#pragma once
#include "MapProvider.h"
#include <QByteArray>
#include <QMutex>
#include <QNetworkProxy>
#include <QNetworkReply>
#include <QPoint>
#include <QString>
class StatkartMapProvider : public MapProvider {
Q_OBJECT
public:
StatkartMapProvider(QObject* parent);
~StatkartMapProvider();
protected:
QString _getURL(int x, int y, int zoom,
QNetworkAccessManager* networkManager);
};
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment