Commit 34abc516 authored by Pierre TILAK's avatar Pierre TILAK

Re-Add Bing

parent aa5584db
......@@ -11,8 +11,6 @@ static const unsigned char pngSignature[] = {0x89, 0x50, 0x4E, 0x47, 0x0D,
static const unsigned char jpegSignature[] = {0xFF, 0xD8, 0xFF, 0x00};
static const unsigned char gifSignature[] = {0x47, 0x49, 0x46, 0x38, 0x00};
const quint32 AVERAGE_BING_STREET_MAP = 1297;
const quint32 AVERAGE_BING_SAT_MAP = 19597;
const quint32 AVERAGE_MAPBOX_SAT_MAP = 15739;
const quint32 AVERAGE_MAPBOX_STREET_MAP = 5648;
const quint32 AVERAGE_TILE_SIZE = 13652;
......
......@@ -24,6 +24,7 @@ HEADERS += \
$$PWD/QGeoTiledMappingManagerEngineQGC.h \
$$PWD/MapProvider.h \
$$PWD/GoogleMapProvider.h \
$$PWD/BingMapProvider.h \
SOURCES += \
$$PWD/QGCMapEngine.cpp \
......@@ -38,6 +39,7 @@ SOURCES += \
$$PWD/QGeoTiledMappingManagerEngineQGC.cpp \
$$PWD/MapProvider.cpp \
$$PWD/GoogleMapProvider.cpp \
$$PWD/BingMapProvider.cpp \
OTHER_FILES += \
$$PWD/qgc_maps_plugin.json
......@@ -42,7 +42,12 @@ UrlFactory::UrlFactory() : _timeout(5 * 1000) {
_providersTable["Google Street Map"] = new GoogleStreetMapProvider(this);
_providersTable["Google Satellite"] = new GoogleSatelliteMapProvider(this);
_providersTable["Google Terrain"] = new GoogleTerrainMapProvider(this);
_providersTable["Google Labels"] = new GoogleTerrainMapProvider(this);
#endif
_providersTable["Bing Road"] = new BingRoadMapProvider(this);
_providersTable["Bing Satellite"] = new BingSatelliteMapProvider(this);
_providersTable["Bing Hybrid"] = new BingHybridMapProvider(this);
}
void UrlFactory::registerProvider(QString name, MapProvider* provider) {
......@@ -164,19 +169,6 @@ QNetworkRequest UrlFactory::getTileURL(QString type, int x, int y, int zoom,
// request.setUrl(QUrl(url));
// request.setRawHeader("Accept", "*/*");
// switch (type) {
// // case GoogleMap:
// // case GoogleSatellite:
// // case GoogleLabels:
// // case GoogleTerrain:
// // case GoogleHybrid:
// // request.setRawHeader("Referrer",
// "https://www.google.com/maps/preview");
// // break;
// case BingHybrid:
// case BingMap:
// case BingSatellite:
// request.setRawHeader("Referrer", "https://www.bing.com/maps/");
// break;
// case StatkartTopo:
// request.setRawHeader("Referrer", "https://www.norgeskart.no/");
// break;
......@@ -223,52 +215,6 @@ UrlFactory::_getURL(QString type, int x, int y, int zoom, QNetworkAccessManager*
{
switch (type) {
Q_UNUSED(networkManager);
case GoogleMap:
{
// http://mt1.google.com/vt/lyrs=m
QString server = "mt";
QString request = "vt";
QString sec1 = ""; // after &x=...
QString sec2 = ""; // after &zoom=...
_getSecGoogleWords(x, y, sec1, sec2);
_tryCorrectGoogleVersions(networkManager);
return QString("http://%1%2.google.com/%3/lyrs=%4&hl=%5&x=%6%7&y=%8&z=%9&s=%10").arg(server).arg(_getServerNum(x, y, 4)).arg(request).arg(_versionGoogleMap).arg(_language).arg(x).arg(sec1).arg(y).arg(zoom).arg(sec2);
}
break;
case GoogleSatellite:
{
// http://mt1.google.com/vt/lyrs=s
QString server = "khm";
QString request = "kh";
QString sec1 = ""; // after &x=...
QString sec2 = ""; // after &zoom=...
_getSecGoogleWords(x, y, sec1, sec2);
_tryCorrectGoogleVersions(networkManager);
return QString("http://%1%2.google.com/%3/v=%4&hl=%5&x=%6%7&y=%8&z=%9&s=%10").arg(server).arg(_getServerNum(x, y, 4)).arg(request).arg(_versionGoogleSatellite).arg(_language).arg(x).arg(sec1).arg(y).arg(zoom).arg(sec2);
}
break;
case GoogleLabels:
{
QString server = "mts";
QString request = "vt";
QString sec1 = ""; // after &x=...
QString sec2 = ""; // after &zoom=...
_getSecGoogleWords(x, y, sec1, sec2);
_tryCorrectGoogleVersions(networkManager);
return QString("http://%1%2.google.com/%3/lyrs=%4&hl=%5&x=%6%7&y=%8&z=%9&s=%10").arg(server).arg(_getServerNum(x, y, 4)).arg(request).arg(_versionGoogleLabels).arg(_language).arg(x).arg(sec1).arg(y).arg(zoom).arg(sec2);
}
break;
case GoogleTerrain:
{
QString server = "mt";
QString request = "vt";
QString sec1 = ""; // after &x=...
QString sec2 = ""; // after &zoom=...
_getSecGoogleWords(x, y, sec1, sec2);
_tryCorrectGoogleVersions(networkManager);
return QString("http://%1%2.google.com/%3/v=%4&hl=%5&x=%6%7&y=%8&z=%9&s=%10").arg(server).arg(_getServerNum(x, y, 4)).arg(request).arg(_versionGoogleTerrain).arg(_language).arg(x).arg(sec1).arg(y).arg(zoom).arg(sec2);
}
break;
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);
......@@ -307,20 +253,14 @@ UrlFactory::_getURL(QString type, int x, int y, int zoom, QNetworkAccessManager*
*/
case BingMap:
{
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);
}
break;
case BingSatellite:
{
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);
}
break;
case BingHybrid:
{
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);
}
/*
case MapQuestMap:
......
......@@ -17,6 +17,7 @@
#define QGC_MAP_URL_ENGINE_H
#include "GoogleMapProvider.h"
#include "BingMapProvider.h"
#define MAX_MAP_ZOOM (20.0)
......
......@@ -229,11 +229,13 @@ QGCMapEngineManager::mapProviderList()
//-----------------------------------------------------------------------------
QStringList
QGCMapEngineManager::mapTypeList()
QGCMapEngineManager::mapTypeList(QString provider)
{
// Extract type name from MapName ( format : "Provider Type")
QStringList mapList = getQGCMapEngine()->getMapNameList();
mapList.replaceInStrings(QRegExp("^([^\\ ]*) (.*)"),"\\2");
qDebug()<< "mapTypeList : " << provider;
mapList = mapList.filter(QRegularExpression(provider));
mapList.replaceInStrings(QRegExp("^([^\\ ]*) (.*)$"),"\\2");
mapList.removeDuplicates();
return mapList;
}
......
......@@ -44,7 +44,6 @@ public:
Q_PROPERTY(QmlObjectListModel* tileSets READ tileSets NOTIFY tileSetsChanged)
Q_PROPERTY(QStringList mapList READ mapList CONSTANT)
Q_PROPERTY(QStringList mapProviderList READ mapProviderList CONSTANT)
Q_PROPERTY(QStringList mapTypeList READ mapTypeList CONSTANT)
Q_PROPERTY(quint32 maxMemCache READ maxMemCache WRITE setMaxMemCache NOTIFY maxMemCacheChanged)
Q_PROPERTY(quint32 maxDiskCache READ maxDiskCache WRITE setMaxDiskCache NOTIFY maxDiskCacheChanged)
Q_PROPERTY(QString errorMessage READ errorMessage NOTIFY errorMessageChanged)
......@@ -80,7 +79,7 @@ public:
QString tileSizeStr ();
QStringList mapList ();
QStringList mapProviderList ();
QStringList mapTypeList ();
Q_INVOKABLE QStringList mapTypeList (QString provider);
QmlObjectListModel* tileSets () { return &_tileSets; }
quint32 maxMemCache ();
quint32 maxDiskCache ();
......
......@@ -167,9 +167,10 @@ Rectangle {
model: QGroundControl.mapEngineManager.mapProviderList
Layout.preferredWidth: _comboFieldWidth
onActivated: {
_mapProvider = textAt(index)
QGroundControl.settingsManager.flightMapSettings.mapProvider.value=textAt(index)
}
_mapProvider = textAt(index)
QGroundControl.settingsManager.flightMapSettings.mapProvider.value=textAt(index)
QGroundControl.settingsManager.flightMapSettings.mapType.value=QGroundControl.mapEngineManager.mapTypeList(textAt(index))[0]
}
Component.onCompleted: {
var index = mapCombo.find(_mapProvider)
mapCombo.currentIndex = index
......@@ -181,11 +182,11 @@ Rectangle {
}
QGCComboBox {
id: mapTypeCombo
model: QGroundControl.mapEngineManager.mapTypeList
model: QGroundControl.mapEngineManager.mapTypeList(_mapProvider)
Layout.preferredWidth: _comboFieldWidth
onActivated: {
_mapType = textAt(index)
QGroundControl.settingsManager.flightMapSettings.mapType.value=textAt(index)
_mapType = textAt(index)
QGroundControl.settingsManager.flightMapSettings.mapType.value=textAt(index)
}
Component.onCompleted: {
var index = mapTypeCombo.find(_mapType)
......
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