/**************************************************************************** * * (c) 2009-2020 QGROUNDCONTROL PROJECT * * QGroundControl is licensed according to the terms in the file * COPYING.md in the root of the source code directory. * ****************************************************************************/ #include "EsriMapProvider.h" #include "QGCApplication.h" #include "SettingsManager.h" EsriMapProvider::EsriMapProvider(const quint32 averageSize, const QGeoMapType::MapStyle mapType, QObject *parent) : MapProvider(QString(), QString(), averageSize, mapType, parent) {} QNetworkRequest EsriMapProvider::getTileURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) { //-- Build URL QNetworkRequest request; const QString url = _getURL(x, y, zoom, networkManager); if (url.isEmpty()) { return request; } request.setUrl(QUrl(url)); request.setRawHeader(QByteArrayLiteral("Accept"), QByteArrayLiteral("*/*")); const QByteArray token = qgcApp()->toolbox()->settingsManager()->appSettings()->esriToken()->rawValue().toString().toLatin1(); request.setRawHeader(QByteArrayLiteral("User-Agent"), QByteArrayLiteral("Qt Location based application")); request.setRawHeader(QByteArrayLiteral("User-Token"), token); return request; } static const QString WorldStreetMapUrl = QStringLiteral("http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer/tile/%1/%2/%3"); QString EsriWorldStreetMapProvider::_getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) { Q_UNUSED(networkManager) return WorldStreetMapUrl.arg(zoom).arg(y).arg(x); } static const QString WorldSatelliteMapUrl = QStringLiteral("http://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/%1/%2/%3"); QString EsriWorldSatelliteMapProvider::_getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) { Q_UNUSED(networkManager) return WorldSatelliteMapUrl.arg(zoom).arg(y).arg(x); } static const QString TerrainMapUrl = QStringLiteral("http://server.arcgisonline.com/ArcGIS/rest/services/World_Terrain_Base/MapServer/tile/%1/%2/%3"); QString EsriTerrainMapProvider::_getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) { Q_UNUSED(networkManager) return TerrainMapUrl.arg(zoom).arg(y).arg(x); }