Commit 15340511 authored by Pierre TILAK's avatar Pierre TILAK

Re-add Mapbox

parent 671987ba
#include "QGCMapEngine.h"
#include "GenericMapProvider.h"
#include "QGCMapEngine.h"
QString StatkartMapProvider::_getURL(int x, int y, int zoom,
QNetworkAccessManager* networkManager) {
......
#include "MapboxMapProvider.h"
#include "QGCApplication.h"
#include "QGCMapEngine.h"
#include "SettingsManager.h"
MapboxMapProvider::MapboxMapProvider(QString mapName, quint32 averageSize,
QGeoMapType::MapStyle mapType,
QObject* parent)
: MapProvider(QString("https://www.mapbox.com/"), QString("jpg"),
averageSize, mapType, parent), mapboxName(mapName) {
}
QString
MapboxMapProvider::_getURL(int x, int y, int zoom,
QNetworkAccessManager* networkManager) {
Q_UNUSED(networkManager);
QString mapBoxToken = qgcApp()
->toolbox()
->settingsManager()
->appSettings()
->mapboxToken()
->rawValue()
.toString();
if (!mapBoxToken.isEmpty()) {
QString server = "https://api.mapbox.com/v4/";
server += mapboxName;
server += QString("/%1/%2/%3.jpg80?access_token=%4")
.arg(zoom)
.arg(x)
.arg(y)
.arg(mapBoxToken);
return server;
}
return QString("");
}
#pragma once
#include "MapProvider.h"
#include <QByteArray>
#include <QMutex>
#include <QNetworkProxy>
#include <QNetworkReply>
#include <QPoint>
#include <QString>
class MapboxMapProvider : public MapProvider {
Q_OBJECT
public:
MapboxMapProvider(QString mapName, quint32 averageSize,
QGeoMapType::MapStyle mapType, QObject* parent);
QString _getURL(int x, int y, int zoom,
QNetworkAccessManager* networkManager);
protected:
QString mapboxName;
};
class MapboxStreetMapProvider : public MapboxMapProvider {
Q_OBJECT
public:
MapboxStreetMapProvider(QObject* parent)
: MapboxMapProvider("mapbox.streets", AVERAGE_MAPBOX_STREET_MAP,
QGeoMapType::StreetMap, parent) {}
};
class MapboxLightMapProvider : public MapboxMapProvider {
Q_OBJECT
public:
MapboxLightMapProvider(QObject* parent)
: MapboxMapProvider("mapbox.light", AVERAGE_TILE_SIZE,
QGeoMapType::CustomMap, parent) {}
};
class MapboxDarkMapProvider : public MapboxMapProvider {
Q_OBJECT
public:
MapboxDarkMapProvider(QObject* parent)
: MapboxMapProvider("mapbox.dark", AVERAGE_TILE_SIZE,
QGeoMapType::CustomMap, parent) {}
};
class MapboxSatelliteMapProvider : public MapboxMapProvider {
Q_OBJECT
public:
MapboxSatelliteMapProvider(QObject* parent)
: MapboxMapProvider("mapbox.satellite", AVERAGE_MAPBOX_SAT_MAP,
QGeoMapType::SatelliteMapDay, parent) {}
};
class MapboxHybridMapProvider : public MapboxMapProvider {
Q_OBJECT
public:
MapboxHybridMapProvider(QObject* parent)
: MapboxMapProvider("mapbox.hybrid", AVERAGE_MAPBOX_SAT_MAP,
QGeoMapType::HybridMap, parent) {}
};
class MapboxWheatPasteMapProvider : public MapboxMapProvider {
Q_OBJECT
public:
MapboxWheatPasteMapProvider(QObject* parent)
: MapboxMapProvider("mapbox.wheatpaste", AVERAGE_TILE_SIZE,
QGeoMapType::CustomMap, parent) {}
};
class MapboxStreetsBasicMapProvider : public MapboxMapProvider {
Q_OBJECT
public:
MapboxStreetsBasicMapProvider(QObject* parent)
: MapboxMapProvider("mapbox.streets-basic", AVERAGE_TILE_SIZE,
QGeoMapType::StreetMap, parent) {}
};
class MapboxComicMapProvider : public MapboxMapProvider {
Q_OBJECT
public:
MapboxComicMapProvider(QObject* parent)
: MapboxMapProvider("mapbox.comic", AVERAGE_TILE_SIZE,
QGeoMapType::CustomMap, parent) {}
};
class MapboxOutdoorsMapProvider : public MapboxMapProvider {
Q_OBJECT
public:
MapboxOutdoorsMapProvider(QObject* parent)
: MapboxMapProvider("mapbox.outdoors", AVERAGE_TILE_SIZE,
QGeoMapType::CustomMap, parent) {}
};
class MapboxRunBikeHikeMapProvider : public MapboxMapProvider {
Q_OBJECT
public:
MapboxRunBikeHikeMapProvider(QObject* parent)
: MapboxMapProvider("mapbox.run-bike-hike", AVERAGE_MAPBOX_STREET_MAP,
QGeoMapType::CycleMap, parent) {}
};
class MapboxPencilMapProvider : public MapboxMapProvider {
Q_OBJECT
public:
MapboxPencilMapProvider(QObject* parent)
: MapboxMapProvider("mapbox.pencil", AVERAGE_TILE_SIZE,
QGeoMapType::CustomMap, parent) {}
};
class MapboxPiratesMapProvider : public MapboxMapProvider {
Q_OBJECT
public:
MapboxPiratesMapProvider(QObject* parent)
: MapboxMapProvider("mapbox.pirates", AVERAGE_TILE_SIZE,
QGeoMapType::CustomMap, parent) {}
};
class MapboxEmeraldMapProvider : public MapboxMapProvider {
Q_OBJECT
public:
MapboxEmeraldMapProvider(QObject* parent)
: MapboxMapProvider("mapbox.emerald", AVERAGE_TILE_SIZE,
QGeoMapType::CustomMap, parent) {}
};
class MapboxHighContrastMapProvider : public MapboxMapProvider {
Q_OBJECT
public:
MapboxHighContrastMapProvider(QObject* parent)
: MapboxMapProvider("mapbox.high-contrast", AVERAGE_TILE_SIZE,
QGeoMapType::CustomMap, parent) {}
};
......@@ -27,6 +27,7 @@ HEADERS += \
$$PWD/BingMapProvider.h \
$$PWD/GenericMapProvider.h \
$$PWD/EsriMapProvider.h \
$$PWD/MapboxMapProvider.h \
SOURCES += \
$$PWD/QGCMapEngine.cpp \
......@@ -44,6 +45,7 @@ SOURCES += \
$$PWD/BingMapProvider.cpp \
$$PWD/GenericMapProvider.cpp \
$$PWD/EsriMapProvider.cpp \
$$PWD/MapboxMapProvider.cpp \
OTHER_FILES += \
$$PWD/qgc_maps_plugin.json
......@@ -24,6 +24,7 @@ QGC_LOGGING_CATEGORY(QGCMapUrlEngineLog, "QGCMapUrlEngineLog")
#include "QGCMapEngine.h"
#include "SettingsManager.h"
#include <QByteArray>
#include <QEventLoop>
#include <QNetworkReply>
......@@ -58,6 +59,16 @@ UrlFactory::UrlFactory() : _timeout(5 * 1000) {
//_providersTable["Esri World Street"] = new EsriWorldStreetMapProvider(this);
//_providersTable["Esri World Satellite"] = new EsriWorldSatelliteMapProvider(this);
//_providersTable["Esri Terrain"] = new EsriTerrainMapProvider(this);
_providersTable["Mapbox Streets"] = new MapboxStreetMapProvider(this);
_providersTable["Mapbox Light"] = new MapboxLightMapProvider(this);
_providersTable["Mapbox Dark"] = new MapboxDarkMapProvider(this);
_providersTable["Mapbox Satellite"] = new MapboxSatelliteMapProvider(this);
_providersTable["Mapbox Hybrid"] = new MapboxHybridMapProvider(this);
_providersTable["Mapbox StreetsBasic"] = new MapboxStreetsBasicMapProvider(this);
_providersTable["Mapbox Outdoors"] = new MapboxOutdoorsMapProvider(this);
_providersTable["Mapbox RunBikeHike"] = new MapboxRunBikeHikeMapProvider(this);
_providersTable["Mapbox HighContrast"] = new MapboxHighContrastMapProvider(this);
}
void UrlFactory::registerProvider(QString name, MapProvider* provider) {
......@@ -219,7 +230,7 @@ QString
UrlFactory::_getURL(QString type, int x, int y, int zoom, QNetworkAccessManager* networkManager)
{
switch (type) {
Q_UNUSED(networkManager);
(networkManager);
case StatkartTopo:
{
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);
......
......@@ -16,10 +16,12 @@
#ifndef QGC_MAP_URL_ENGINE_H
#define QGC_MAP_URL_ENGINE_H
#include "GoogleMapProvider.h"
#include "BingMapProvider.h"
#include "GenericMapProvider.h"
#include "EsriMapProvider.h"
#include "MapboxMapProvider.h"
#define MAX_MAP_ZOOM (20.0)
......@@ -27,28 +29,6 @@ class UrlFactory : public QObject {
Q_OBJECT
public:
//
// enum QString
// {
// Invalid = -1,
//
// GoogleMap = 1,
// GoogleSatellite = 4,
// GoogleLabels = 8,
// GoogleTerrain = 16,
// GoogleHybrid = 20,
//
// OpenStreetMap = 32,
// OpenStreetOsm = 33,
// OpenStreetMapSurfer = 34,
// OpenStreetMapSurferTerrain=35,
//
// StatkartTopo = 100,
// EniroTopo = 110,
//
// BingMap = 444,
// BingSatellite = 555,
// BingHybrid = 666,
//
// /*
// MapQuestMap = 700,
// MapQuestSat = 701,
......@@ -73,9 +53,6 @@ public:
// MapboxEmerald = 6012,
// MapboxHighContrast = 6013,
//
// EsriWorldStreet = 7000,
// EsriWorldSatellite = 7001,
// EsriTerrain = 7002,
//
// AirmapElevation = 8001
// };
......
......@@ -102,7 +102,6 @@ QGeoTiledMappingManagerEngineQGC::QGeoTiledMappingManagerEngineQGC(const QVarian
QList<QGeoMapType> mapList;
QHashIterator<QString, MapProvider*> i(getQGCMapEngine()->urlFactory()->getProviderTable());
int id = 0;
while(i.hasNext()){
i.next();
......@@ -113,38 +112,6 @@ QGeoTiledMappingManagerEngineQGC::QGeoTiledMappingManagerEngineQGC(const QVarian
setSupportedMapTypes(mapList);
qDebug() << "End Adding Provider";
//-- IMPORTANT
// Changes here must reflect those in QGCMapEngine.cpp
// setSupportedMapTypes({
//#ifndef QGC_NO_GOOGLE_MAPS
// QGCGEOMAPTYPE(QGeoMapType::StreetMap, "Google Street Map", "Google street map", false, false, UrlFactory::GoogleMap),
// QGCGEOMAPTYPE(QGeoMapType::SatelliteMapDay, "Google Satellite Map", "Google satellite map", false, false, UrlFactory::GoogleSatellite),
// QGCGEOMAPTYPE(QGeoMapType::TerrainMap, "Google Terrain Map", "Google terrain map", false, false, UrlFactory::GoogleTerrain),
//#endif
//
// /* TODO:
// * Proper google hybrid maps requires collecting two separate bitmaps and overlaying them.
// *
// * mapTypes << QGCGEOMAPTYPE(QGeoMapType::HybridMap, "Google Hybrid Map", "Google hybrid map", false, false, UrlFactory::GoogleHybrid),
// *
// */
//
// // Bing
// QGCGEOMAPTYPE(QGeoMapType::StreetMap, "Bing Street Map", "Bing street map", false, false, UrlFactory::BingMap),
// QGCGEOMAPTYPE(QGeoMapType::SatelliteMapDay, "Bing Satellite Map", "Bing satellite map", false, false, UrlFactory::BingSatellite),
// QGCGEOMAPTYPE(QGeoMapType::HybridMap, "Bing Hybrid Map", "Bing hybrid map", false, false, UrlFactory::BingHybrid),
//
// // Statkart
// QGCGEOMAPTYPE(QGeoMapType::TerrainMap, "Statkart Terrain Map", "Statkart Terrain Map", false, false, UrlFactory::StatkartTopo),
// // Eniro
// QGCGEOMAPTYPE(QGeoMapType::TerrainMap, "Eniro Terrain Map", "Eniro Terrain Map", false, false, UrlFactory::EniroTopo),
//
// // Esri
// QGCGEOMAPTYPE(QGeoMapType::StreetMap, "Esri Street Map", "ArcGIS Online World Street Map", true, false, UrlFactory::EsriWorldStreet),
// QGCGEOMAPTYPE(QGeoMapType::SatelliteMapDay, "Esri Satellite Map", "ArcGIS Online World Imagery", true, false, UrlFactory::EsriWorldSatellite),
// QGCGEOMAPTYPE(QGeoMapType::TerrainMap, "Esri Terrain Map", "World Terrain Base", false, false, UrlFactory::EsriTerrain),
//
// // VWorld
// QGCGEOMAPTYPE(QGeoMapType::SatelliteMapDay, "VWorld Satellite Map", "VWorld Satellite Map", false, false, UrlFactory::VWorldSatellite),
// QGCGEOMAPTYPE(QGeoMapType::StreetMap, "VWorld Street Map", "VWorld Street Map", false, false, UrlFactory::VWorldStreet),
......
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