Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Q
qgroundcontrol
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Valentin Platzgummer
qgroundcontrol
Commits
8313f8e8
Commit
8313f8e8
authored
Sep 16, 2019
by
Pierre TILAK
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add Statkart
parent
34abc516
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
190 additions
and
19 deletions
+190
-19
BingMapProvider.cpp
src/QtLocationPlugin/BingMapProvider.cpp
+51
-0
BingMapProvider.h
src/QtLocationPlugin/BingMapProvider.h
+74
-0
MapProvider.h
src/QtLocationPlugin/MapProvider.h
+14
-14
QGCLocationPlugin.pri
src/QtLocationPlugin/QGCLocationPlugin.pri
+2
-0
QGCMapUrlEngine.cpp
src/QtLocationPlugin/QGCMapUrlEngine.cpp
+2
-5
QGCMapUrlEngine.h
src/QtLocationPlugin/QGCMapUrlEngine.h
+1
-0
StatkartMapProvider.cpp
src/QtLocationPlugin/StatkartMapProvider.cpp
+23
-0
StatkartMapProvider.h
src/QtLocationPlugin/StatkartMapProvider.h
+23
-0
No files found.
src/QtLocationPlugin/BingMapProvider.cpp
0 → 100644
View file @
8313f8e8
#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
);
}
src/QtLocationPlugin/BingMapProvider.h
0 → 100644
View file @
8313f8e8
#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
);
};
src/QtLocationPlugin/MapProvider.h
View file @
8313f8e8
...
...
@@ -11,37 +11,37 @@ 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_MAPBOX_SAT_MAP
=
15739
;
const
quint32
AVERAGE_MAPBOX_STREET_MAP
=
5648
;
const
quint32
AVERAGE_TILE_SIZE
=
13652
;
const
quint32
AVERAGE_AIRMAP_ELEV_SIZE
=
2786
;
const
quint32
AVERAGE_MAPBOX_SAT_MAP
=
15739
;
const
quint32
AVERAGE_MAPBOX_STREET_MAP
=
5648
;
const
quint32
AVERAGE_TILE_SIZE
=
13652
;
const
quint32
AVERAGE_AIRMAP_ELEV_SIZE
=
2786
;
class
MapProvider
:
public
QObject
{
Q_OBJECT
public:
MapProvider
(
QString
referrer
,
QString
imageFormat
,
quint32
averageSize
,
QGeoMapType
::
MapStyle
_mapType
=
QGeoMapType
::
CustomMap
,
QObject
*
parent
=
nullptr
);
MapProvider
(
QString
referrer
,
QString
imageFormat
,
quint32
averageSize
,
QGeoMapType
::
MapStyle
_mapType
=
QGeoMapType
::
CustomMap
,
QObject
*
parent
=
nullptr
);
QNetworkRequest
getTileURL
(
int
x
,
int
y
,
int
zoom
,
QNetworkAccessManager
*
networkManager
);
QString
getImageFormat
(
const
QByteArray
&
image
);
quint32
getAverageSize
()
{
return
_averageSize
;
}
quint32
getAverageSize
()
{
return
_averageSize
;
}
QGeoMapType
::
MapStyle
getMapStyle
()
{
return
_mapType
;
}
QGeoMapType
::
MapStyle
getMapStyle
()
{
return
_mapType
;
}
protected:
QString
_tileXYToQuadKey
(
int
tileX
,
int
tileY
,
int
levelOfDetail
);
int
_getServerNum
(
int
x
,
int
y
,
int
max
);
// Define Referrer for Request RawHeader
QString
_referrer
;
QString
_imageFormat
;
quint32
_averageSize
;
QByteArray
_userAgent
;
QString
_language
;
QString
_referrer
;
QString
_imageFormat
;
quint32
_averageSize
;
QByteArray
_userAgent
;
QString
_language
;
QGeoMapType
::
MapStyle
_mapType
;
// Define the url to Request
...
...
src/QtLocationPlugin/QGCLocationPlugin.pri
View file @
8313f8e8
...
...
@@ -25,6 +25,7 @@ HEADERS += \
$$PWD/MapProvider.h \
$$PWD/GoogleMapProvider.h \
$$PWD/BingMapProvider.h \
$$PWD/StatkartMapProvider.h \
SOURCES += \
$$PWD/QGCMapEngine.cpp \
...
...
@@ -40,6 +41,7 @@ SOURCES += \
$$PWD/MapProvider.cpp \
$$PWD/GoogleMapProvider.cpp \
$$PWD/BingMapProvider.cpp \
$$PWD/StatkartMapProvider.cpp \
OTHER_FILES += \
$$PWD/qgc_maps_plugin.json
src/QtLocationPlugin/QGCMapUrlEngine.cpp
View file @
8313f8e8
...
...
@@ -48,6 +48,8 @@ UrlFactory::UrlFactory() : _timeout(5 * 1000) {
_providersTable
[
"Bing Road"
]
=
new
BingRoadMapProvider
(
this
);
_providersTable
[
"Bing Satellite"
]
=
new
BingSatelliteMapProvider
(
this
);
_providersTable
[
"Bing Hybrid"
]
=
new
BingHybridMapProvider
(
this
);
_providersTable
[
"Statkart Topo"
]
=
new
StatkartMapProvider
(
this
);
}
void
UrlFactory
::
registerProvider
(
QString
name
,
MapProvider
*
provider
)
{
...
...
@@ -88,11 +90,6 @@ QString UrlFactory::getImageFormat(QString type, const QByteArray& image) {
// format = "gif";
// else {
// switch (type) {
// case GoogleMap:
// case GoogleLabels:
// case GoogleTerrain:
// case GoogleHybrid:
// case BingMap:
// case StatkartTopo:
// format = "png";
// break;
...
...
src/QtLocationPlugin/QGCMapUrlEngine.h
View file @
8313f8e8
...
...
@@ -18,6 +18,7 @@
#include "GoogleMapProvider.h"
#include "BingMapProvider.h"
#include "StatkartMapProvider.h"
#define MAX_MAP_ZOOM (20.0)
...
...
src/QtLocationPlugin/StatkartMapProvider.cpp
0 → 100644
View file @
8313f8e8
#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
);
}
src/QtLocationPlugin/StatkartMapProvider.h
0 → 100644
View file @
8313f8e8
#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
);
};
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment