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
cf560e2c
Commit
cf560e2c
authored
Sep 13, 2019
by
Pierre TILAK
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Use Hash table in QGeoTiledMappingManagerEngineQGC
parent
9da70e37
Changes
7
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
165 additions
and
101 deletions
+165
-101
GoogleMapProvider.cpp
src/QtLocationPlugin/GoogleMapProvider.cpp
+3
-4
GoogleMapProvider.h
src/QtLocationPlugin/GoogleMapProvider.h
+59
-8
MapProvider.cpp
src/QtLocationPlugin/MapProvider.cpp
+2
-2
MapProvider.h
src/QtLocationPlugin/MapProvider.h
+25
-12
QGCMapUrlEngine.cpp
src/QtLocationPlugin/QGCMapUrlEngine.cpp
+1
-9
QGCMapUrlEngine.h
src/QtLocationPlugin/QGCMapUrlEngine.h
+2
-4
QGeoTiledMappingManagerEngineQGC.cpp
src/QtLocationPlugin/QGeoTiledMappingManagerEngineQGC.cpp
+73
-62
No files found.
src/QtLocationPlugin/GoogleMapProvider.cpp
View file @
cf560e2c
...
...
@@ -5,11 +5,10 @@
#endif
#include "QGCMapEngine.h"
#define AVERAGE_GOOGLE_STREET_MAP 4913
GoogleMapProvider
::
GoogleMapProvider
(
QObject
*
parent
)
GoogleMapProvider
::
GoogleMapProvider
(
quint32
averageSize
,
QGeoMapType
::
MapStyle
mapType
,
QObject
*
parent
)
:
MapProvider
(
QString
(
"https://www.google.com/maps/preview"
),
QString
(
"png"
),
quint32
(
AVERAGE_GOOGLE_STREET_MAP
)
,
parent
),
QString
(
"png"
),
averageSize
,
mapType
,
parent
),
_googleVersionRetrieved
(
false
),
_googleReply
(
nullptr
)
{
// Google version strings
...
...
@@ -127,7 +126,7 @@ void GoogleMapProvider::_tryCorrectGoogleVersions(
}
}
QString
GoogleMapProvider
::
_getURL
(
int
x
,
int
y
,
int
zoom
,
QString
Google
Street
MapProvider
::
_getURL
(
int
x
,
int
y
,
int
zoom
,
QNetworkAccessManager
*
networkManager
)
{
// http://mt1.google.com/vt/lyrs=m
QString
server
=
"mt"
;
...
...
src/QtLocationPlugin/GoogleMapProvider.h
View file @
cf560e2c
...
...
@@ -3,16 +3,17 @@
#include "MapProvider.h"
#include <QByteArray>
#include <QMutex>
#include <QNetworkProxy>
#include <QNetworkReply>
#include <QString>
#include <QPoint>
#include <Q
Mutex
>
#include <Q
String
>
class
GoogleMapProvider
:
public
MapProvider
{
Q_OBJECT
public:
GoogleMapProvider
(
QObject
*
parent
);
GoogleMapProvider
(
quint32
averageSize
,
QGeoMapType
::
MapStyle
mapType
,
QObject
*
parent
);
~
GoogleMapProvider
();
...
...
@@ -25,8 +26,8 @@ class GoogleMapProvider : public MapProvider {
protected:
// Define the url to Request
QString
_getURL
(
int
x
,
int
y
,
int
zoom
,
QNetworkAccessManager
*
networkManager
)
;
virtual
QString
_getURL
(
int
x
,
int
y
,
int
zoom
,
QNetworkAccessManager
*
networkManager
)
=
0
;
// Google Specific private methods
void
_getSecGoogleWords
(
int
x
,
int
y
,
QString
&
sec1
,
QString
&
sec2
);
...
...
@@ -43,28 +44,78 @@ class GoogleMapProvider : public MapProvider {
QString
_secGoogleWord
;
};
// NoMap = 0,
// StreetMap,
// SatelliteMapDay,
// SatelliteMapNight,
// TerrainMap,
// HybridMap,
// TransitMap,
// GrayStreetMap,
// PedestrianMap,
// CarNavigationMap,
// CycleMap,
// CustomMap = 100
const
unsigned
int
AVERAGE_GOOGLE_STREET_MAP
=
4913
;
const
unsigned
int
AVERAGE_GOOGLE_SAT_MAP
=
56887
;
const
unsigned
int
AVERAGE_GOOGLE_TERRAIN_MAP
=
19391
;
// -----------------------------------------------------------
// Google Street Map
class
GoogleStreetMapProvider
:
public
GoogleMapProvider
{
Q_OBJECT
public:
GoogleStreetMapProvider
(
QObject
*
parent
)
:
GoogleMapProvider
(
AVERAGE_GOOGLE_STREET_MAP
,
QGeoMapType
::
StreetMap
,
parent
)
{}
protected:
QString
_getURL
(
int
x
,
int
y
,
int
zoom
,
QNetworkAccessManager
*
networkManager
);
};
// -----------------------------------------------------------
// Google Street Map
class
GoogleSatelliteMapProvider
:
public
GoogleMapProvider
{
Q_OBJECT
public:
GoogleSatelliteMapProvider
(
QObject
*
parent
)
:
GoogleMapProvider
(
parent
){}
GoogleSatelliteMapProvider
(
QObject
*
parent
)
:
GoogleMapProvider
(
AVERAGE_GOOGLE_SAT_MAP
,
QGeoMapType
::
SatelliteMapDay
,
parent
)
{}
protected:
QString
_getURL
(
int
x
,
int
y
,
int
zoom
,
QNetworkAccessManager
*
networkManager
);
};
// -----------------------------------------------------------
// Google Labels Map
class
GoogleLabelsMapProvider
:
public
GoogleMapProvider
{
Q_OBJECT
public:
GoogleLabelsMapProvider
(
QObject
*
parent
)
:
GoogleMapProvider
(
parent
){}
GoogleLabelsMapProvider
(
QObject
*
parent
)
:
GoogleMapProvider
(
AVERAGE_TILE_SIZE
,
QGeoMapType
::
CustomMap
,
parent
)
{
}
protected:
QString
_getURL
(
int
x
,
int
y
,
int
zoom
,
QNetworkAccessManager
*
networkManager
);
};
// -----------------------------------------------------------
// Google Terrain Map
class
GoogleTerrainMapProvider
:
public
GoogleMapProvider
{
Q_OBJECT
public:
GoogleTerrainMapProvider
(
QObject
*
parent
)
:
GoogleMapProvider
(
parent
){}
GoogleTerrainMapProvider
(
QObject
*
parent
)
:
GoogleMapProvider
(
AVERAGE_GOOGLE_TERRAIN_MAP
,
QGeoMapType
::
TerrainMap
,
parent
)
{}
protected:
QString
_getURL
(
int
x
,
int
y
,
int
zoom
,
QNetworkAccessManager
*
networkManager
);
...
...
src/QtLocationPlugin/MapProvider.cpp
View file @
cf560e2c
#include "MapProvider.h"
MapProvider
::
MapProvider
(
QString
referrer
,
QString
imageFormat
,
quint32
averageSize
,
QObject
*
parent
)
quint32
averageSize
,
Q
GeoMapType
::
MapStyle
mapType
,
Q
Object
*
parent
)
:
QObject
(
parent
),
_referrer
(
referrer
),
_imageFormat
(
imageFormat
),
_averageSize
(
averageSize
)
{
_averageSize
(
averageSize
)
,
_mapType
(
mapType
)
{
QStringList
langs
=
QLocale
::
system
().
uiLanguages
();
if
(
langs
.
length
()
>
0
)
{
_language
=
langs
[
0
];
...
...
src/QtLocationPlugin/MapProvider.h
View file @
cf560e2c
...
...
@@ -4,32 +4,45 @@
#include <QNetworkProxy>
#include <QNetworkReply>
#include <QString>
#include <QtLocation/private/qgeomaptype_p.h>
static
const
unsigned
char
pngSignature
[]
=
{
0x89
,
0x50
,
0x4E
,
0x47
,
0x0D
,
0x0A
,
0x1A
,
0x0A
,
0x00
};
static
const
unsigned
char
jpegSignature
[]
=
{
0xFF
,
0xD8
,
0xFF
,
0x00
};
static
const
unsigned
char
gifSignature
[]
=
{
0x47
,
0x49
,
0x46
,
0x38
,
0x00
};
static
const
unsigned
char
pngSignature
[]
=
{
0x89
,
0x50
,
0x4E
,
0x47
,
0x0D
,
0x0A
,
0x1A
,
0x0A
,
0x00
};
static
const
unsigned
char
jpegSignature
[]
=
{
0xFF
,
0xD8
,
0xFF
,
0x00
};
static
const
unsigned
char
gifSignature
[]
=
{
0x47
,
0x49
,
0x46
,
0x38
,
0x00
};
const
unsigned
int
AVERAGE_BING_STREET_MAP
=
1297
;
const
unsigned
int
AVERAGE_BING_SAT_MAP
=
19597
;
const
unsigned
int
AVERAGE_MAPBOX_SAT_MAP
=
15739
;
const
unsigned
int
AVERAGE_MAPBOX_STREET_MAP
=
5648
;
const
unsigned
int
AVERAGE_TILE_SIZE
=
13652
;
const
unsigned
int
AVERAGE_AIRMAP_ELEV_SIZE
=
2786
;
class
MapProvider
:
public
QObject
{
Q_OBJECT
public:
MapProvider
(
QString
referrer
,
QString
imageFormat
,
quint32
averageSize
,
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
);
QGeoMapType
::
MapStyle
getMapStyle
(){
return
_mapType
;}
protected:
QString
_tileXYToQuadKey
(
int
tileX
,
int
tileY
,
int
levelOfDetail
);
int
_getServerNum
(
int
x
,
int
y
,
int
max
);
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
virtual
QString
_getURL
(
int
x
,
int
y
,
int
zoom
,
...
...
src/QtLocationPlugin/QGCMapUrlEngine.cpp
View file @
cf560e2c
...
...
@@ -29,14 +29,6 @@
#include <QByteArray>
#define AVERAGE_GOOGLE_TERRAIN_MAP 19391
#define AVERAGE_BING_STREET_MAP 1297
#define AVERAGE_BING_SAT_MAP 19597
#define AVERAGE_GOOGLE_SAT_MAP 56887
#define AVERAGE_MAPBOX_SAT_MAP 15739
#define AVERAGE_MAPBOX_STREET_MAP 5648
#define AVERAGE_TILE_SIZE 13652
#define AVERAGE_AIRMAP_ELEV_SIZE 2786
//-----------------------------------------------------------------------------
UrlFactory
::
UrlFactory
()
...
...
@@ -46,7 +38,7 @@ UrlFactory::UrlFactory()
// BingMaps
//_versionBingMaps = "563";
#ifndef QGC_NO_GOOGLE_MAPS
_providersTable
[
"GoogleStreet"
]
=
new
GoogleMapProvider
(
this
);
_providersTable
[
"GoogleStreet"
]
=
new
Google
Street
MapProvider
(
this
);
_providersTable
[
"GoogleSatellite"
]
=
new
GoogleSatelliteMapProvider
(
this
);
#endif
_curMapProvider
=
_providersTable
[
"GoogleStreet"
];
...
...
src/QtLocationPlugin/QGCMapUrlEngine.h
View file @
cf560e2c
...
...
@@ -85,18 +85,16 @@ public:
static
quint32
averageSizeForType
(
MapType
type
);
//private:
// QString _getURL (MapType type, int x, int y, int zoom, QNetworkAccessManager* networkManager);
QHash
<
QString
,
MapProvider
*>
getProviderTable
(){
return
_providersTable
;}
private:
int
_timeout
;
QHash
<
QString
,
MapProvider
*>
_providersTable
;
// BingMaps
//QString _versionBingMaps;
MapProvider
*
_curMapProvider
;
QHash
<
QString
,
MapProvider
*>
_providersTable
;
};
...
...
src/QtLocationPlugin/QGeoTiledMappingManagerEngineQGC.cpp
View file @
cf560e2c
This diff is collapsed.
Click to expand it.
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