10 changed files with 197 additions and 74 deletions
@ -0,0 +1,61 @@ |
|||||||
|
#include "EsriMapProvider.h" |
||||||
|
#include "QGCApplication.h" |
||||||
|
#include "QGCMapEngine.h" |
||||||
|
#include "SettingsManager.h" |
||||||
|
|
||||||
|
QNetworkRequest |
||||||
|
EsriMapProvider::getTileURL(int x, int y, int zoom, |
||||||
|
QNetworkAccessManager* networkManager) { |
||||||
|
//-- Build URL
|
||||||
|
QNetworkRequest request; |
||||||
|
QString url = _getURL(x, y, zoom, networkManager); |
||||||
|
if (url.isEmpty()) { |
||||||
|
return request; |
||||||
|
} |
||||||
|
request.setUrl(QUrl(url)); |
||||||
|
request.setRawHeader("Accept", "*/*"); |
||||||
|
QByteArray token = qgcApp() |
||||||
|
->toolbox() |
||||||
|
->settingsManager() |
||||||
|
->appSettings() |
||||||
|
->esriToken() |
||||||
|
->rawValue() |
||||||
|
.toString() |
||||||
|
.toLatin1(); |
||||||
|
request.setRawHeader("User-Agent", |
||||||
|
QByteArrayLiteral("Qt Location based application")); |
||||||
|
request.setRawHeader("User-Token", token); |
||||||
|
return request; |
||||||
|
} |
||||||
|
|
||||||
|
QString |
||||||
|
EsriWorldStreetMapProvider::_getURL(int x, int y, int zoom, |
||||||
|
QNetworkAccessManager* networkManager) { |
||||||
|
Q_UNUSED(networkManager); |
||||||
|
return QString("http://services.arcgisonline.com/ArcGIS/rest/services/" |
||||||
|
"World_Street_Map/MapServer/tile/%1/%2/%3") |
||||||
|
.arg(zoom) |
||||||
|
.arg(y) |
||||||
|
.arg(x); |
||||||
|
} |
||||||
|
|
||||||
|
QString |
||||||
|
EsriWorldSatelliteMapProvider::_getURL(int x, int y, int zoom, |
||||||
|
QNetworkAccessManager* networkManager) { |
||||||
|
Q_UNUSED(networkManager); |
||||||
|
return QString("http://server.arcgisonline.com/ArcGIS/rest/" |
||||||
|
"services/World_Imagery/MapServer/tile/%1/%2/%3") |
||||||
|
.arg(zoom) |
||||||
|
.arg(y) |
||||||
|
.arg(x); |
||||||
|
} |
||||||
|
|
||||||
|
QString EsriTerrainMapProvider::_getURL(int x, int y, int zoom, |
||||||
|
QNetworkAccessManager* networkManager) { |
||||||
|
Q_UNUSED(networkManager); |
||||||
|
return QString("http://server.arcgisonline.com/ArcGIS/rest/services/" |
||||||
|
"World_Terrain_Base/MapServer/tile/%1/%2/%3") |
||||||
|
.arg(zoom) |
||||||
|
.arg(y) |
||||||
|
.arg(x); |
||||||
|
} |
@ -0,0 +1,49 @@ |
|||||||
|
#pragma once |
||||||
|
|
||||||
|
#include "MapProvider.h" |
||||||
|
|
||||||
|
#include <QByteArray> |
||||||
|
#include <QMutex> |
||||||
|
#include <QNetworkProxy> |
||||||
|
#include <QNetworkReply> |
||||||
|
#include <QPoint> |
||||||
|
#include <QString> |
||||||
|
|
||||||
|
class EsriMapProvider : public MapProvider { |
||||||
|
Q_OBJECT |
||||||
|
public: |
||||||
|
using MapProvider::MapProvider; |
||||||
|
|
||||||
|
QNetworkRequest getTileURL(int x, int y, int zoom, |
||||||
|
QNetworkAccessManager* networkManager); |
||||||
|
}; |
||||||
|
|
||||||
|
class EsriWorldStreetMapProvider : public EsriMapProvider { |
||||||
|
Q_OBJECT |
||||||
|
public: |
||||||
|
EsriWorldStreetMapProvider(QObject* parent) |
||||||
|
: EsriMapProvider(QString(""), QString(""), AVERAGE_TILE_SIZE, |
||||||
|
QGeoMapType::StreetMap, parent) {} |
||||||
|
QString _getURL(int x, int y, int zoom, |
||||||
|
QNetworkAccessManager* networkManager); |
||||||
|
}; |
||||||
|
|
||||||
|
class EsriWorldSatelliteMapProvider : public EsriMapProvider { |
||||||
|
Q_OBJECT |
||||||
|
public: |
||||||
|
EsriWorldSatelliteMapProvider(QObject* parent) |
||||||
|
: EsriMapProvider(QString(""), QString(""), AVERAGE_TILE_SIZE, |
||||||
|
QGeoMapType::SatelliteMapDay, parent) {} |
||||||
|
QString _getURL(int x, int y, int zoom, |
||||||
|
QNetworkAccessManager* networkManager); |
||||||
|
}; |
||||||
|
|
||||||
|
class EsriTerrainMapProvider : public EsriMapProvider { |
||||||
|
Q_OBJECT |
||||||
|
public: |
||||||
|
EsriTerrainMapProvider(QObject* parent) |
||||||
|
: EsriMapProvider(QString(""), QString(""), AVERAGE_TILE_SIZE, |
||||||
|
QGeoMapType::TerrainMap, parent) {} |
||||||
|
QString _getURL(int x, int y, int zoom, |
||||||
|
QNetworkAccessManager* networkManager); |
||||||
|
}; |
@ -0,0 +1,32 @@ |
|||||||
|
#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) |
||||||
|
: MapProvider(QString("https://www.norgeskart.no/"), QString("png"), |
||||||
|
AVERAGE_TILE_SIZE, QGeoMapType::StreetMap, parent) {} |
||||||
|
|
||||||
|
QString _getURL(int x, int y, int zoom, |
||||||
|
QNetworkAccessManager* networkManager); |
||||||
|
}; |
||||||
|
|
||||||
|
class EniroMapProvider : public MapProvider { |
||||||
|
Q_OBJECT |
||||||
|
public: |
||||||
|
EniroMapProvider(QObject* parent) |
||||||
|
: MapProvider(QString("https://www.eniro.se/"), QString("png"), |
||||||
|
AVERAGE_TILE_SIZE, QGeoMapType::StreetMap, parent) {} |
||||||
|
|
||||||
|
QString _getURL(int x, int y, int zoom, |
||||||
|
QNetworkAccessManager* networkManager); |
||||||
|
}; |
@ -1,23 +0,0 @@ |
|||||||
#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); |
|
||||||
}; |
|
||||||
|
|
Loading…
Reference in new issue