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
a900cdde
Commit
a900cdde
authored
Apr 07, 2015
by
Don Gagne
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #1418 from dogmaphobic/googleMapping
Google mapping
parents
146f52ce
c6c75198
Changes
25
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
25 changed files
with
3089 additions
and
857 deletions
+3089
-857
QGCSetup.pri
QGCSetup.pri
+1
-1
.qmake.conf
libs/QtLocationQGC/.qmake.conf
+3
-0
QtLocationQGC.pro
libs/QtLocationQGC/QtLocationQGC.pro
+32
-0
qgc_maps_plugin.json
libs/QtLocationQGC/qgc_maps_plugin.json
+11
-0
OpenPilotMaps.cc
libs/QtLocationQGC/src/OpenPilotMaps.cc
+490
-0
OpenPilotMaps.h
libs/QtLocationQGC/src/OpenPilotMaps.h
+157
-0
qgeocodereplyqgc.cpp
libs/QtLocationQGC/src/qgeocodereplyqgc.cpp
+301
-0
qgeocodereplyqgc.h
libs/QtLocationQGC/src/qgeocodereplyqgc.h
+75
-0
qgeocodingmanagerengineqgc.cpp
libs/QtLocationQGC/src/qgeocodingmanagerengineqgc.cpp
+181
-0
qgeocodingmanagerengineqgc.h
libs/QtLocationQGC/src/qgeocodingmanagerengineqgc.h
+81
-0
qgeomapreplyqgc.cpp
libs/QtLocationQGC/src/qgeomapreplyqgc.cpp
+142
-0
qgeomapreplyqgc.h
libs/QtLocationQGC/src/qgeomapreplyqgc.h
+78
-0
qgeoserviceproviderpluginqgc.cpp
libs/QtLocationQGC/src/qgeoserviceproviderpluginqgc.cpp
+82
-0
qgeoserviceproviderpluginqgc.h
libs/QtLocationQGC/src/qgeoserviceproviderpluginqgc.h
+70
-0
qgeotiledmappingmanagerengineqgc.cpp
libs/QtLocationQGC/src/qgeotiledmappingmanagerengineqgc.cpp
+166
-0
qgeotiledmappingmanagerengineqgc.h
libs/QtLocationQGC/src/qgeotiledmappingmanagerengineqgc.h
+66
-0
qgeotilefetcherqgc.cpp
libs/QtLocationQGC/src/qgeotilefetcherqgc.cpp
+150
-0
qgeotilefetcherqgc.h
libs/QtLocationQGC/src/qgeotilefetcherqgc.h
+78
-0
qgcsystem.pro
qgcsystem.pro
+819
-0
qgroundcontrol.pro
qgroundcontrol.pro
+6
-762
main.cc
src/main.cc
+8
-0
FlightDisplay.qml
src/ui/flightdisplay/FlightDisplay.qml
+86
-88
QGCFlightDisplay.cc
src/ui/flightdisplay/QGCFlightDisplay.cc
+3
-3
QGCFlightDisplay.h
src/ui/flightdisplay/QGCFlightDisplay.h
+2
-2
QGCMapBackground.qml
src/ui/flightdisplay/components/QGCMapBackground.qml
+1
-1
No files found.
QGCSetup.pri
View file @
a900cdde
...
...
@@ -165,6 +165,7 @@ WindowsBuild {
$$DLL_DIR\\icu*.dll \
$$DLL_DIR\\Qt5Core$${DLL_QT_DEBUGCHAR}.dll \
$$DLL_DIR\\Qt5Gui$${DLL_QT_DEBUGCHAR}.dll \
$$DLL_DIR\\Qt5Location$${DLL_QT_DEBUGCHAR}.dll \
$$DLL_DIR\\Qt5Multimedia$${DLL_QT_DEBUGCHAR}.dll \
$$DLL_DIR\\Qt5MultimediaWidgets$${DLL_QT_DEBUGCHAR}.dll \
$$DLL_DIR\\Qt5Network$${DLL_QT_DEBUGCHAR}.dll \
...
...
@@ -176,7 +177,6 @@ WindowsBuild {
$$DLL_DIR\\Qt5QuickWidgets$${DLL_QT_DEBUGCHAR}.dll \
$$DLL_DIR\\Qt5Sensors$${DLL_QT_DEBUGCHAR}.dll \
$$DLL_DIR\\Qt5SerialPort$${DLL_QT_DEBUGCHAR}.dll \
$$DLL_DIR\\Qt5OpenGL$${DLL_QT_DEBUGCHAR}.dll \
$$DLL_DIR\\Qt5Sql$${DLL_QT_DEBUGCHAR}.dll \
$$DLL_DIR\\Qt5Svg$${DLL_QT_DEBUGCHAR}.dll \
$$DLL_DIR\\Qt5Test$${DLL_QT_DEBUGCHAR}.dll \
...
...
libs/QtLocationQGC/.qmake.conf
0 → 100644
View file @
a900cdde
load
(
qt_build_config
)
MODULE_VERSION
=
5
.
4
.
1
libs/QtLocationQGC/QtLocationQGC.pro
0 → 100644
View file @
a900cdde
TARGET
=
qtgeoservices_qgc
CONFIG
+=
static
QT
+=
location
-
private
positioning
-
private
network
PLUGIN_TYPE
=
geoservices
PLUGIN_CLASS_NAME
=
QGeoServiceProviderFactoryQGC
load
(
qt_plugin
)
INCLUDEPATH
+=
$$
QT
.
location
.
includes
HEADERS
+=
\
$$
PWD
/
src
/
qgeoserviceproviderpluginqgc
.
h
\
$$
PWD
/
src
/
qgeotiledmappingmanagerengineqgc
.
h
\
$$
PWD
/
src
/
qgeotilefetcherqgc
.
h
\
$$
PWD
/
src
/
qgeomapreplyqgc
.
h
\
$$
PWD
/
src
/
qgeocodingmanagerengineqgc
.
h
\
$$
PWD
/
src
/
qgeocodereplyqgc
.
h
\
$$
PWD
/
src
/
OpenPilotMaps
.
h
SOURCES
+=
\
$$
PWD
/
src
/
qgeoserviceproviderpluginqgc
.
cpp
\
$$
PWD
/
src
/
qgeotiledmappingmanagerengineqgc
.
cpp
\
$$
PWD
/
src
/
qgeotilefetcherqgc
.
cpp
\
$$
PWD
/
src
/
qgeomapreplyqgc
.
cpp
\
$$
PWD
/
src
/
qgeocodingmanagerengineqgc
.
cpp
\
$$
PWD
/
src
/
qgeocodereplyqgc
.
cpp
\
$$
PWD
/
src
/
OpenPilotMaps
.
cc
OTHER_FILES
+=
\
$$
PWD
/
qgc_maps_plugin
.
json
libs/QtLocationQGC/qgc_maps_plugin.json
0 → 100644
View file @
a900cdde
{
"Keys"
:
[
"qgc-maps"
],
"Provider"
:
"QGroundControl"
,
"Version"
:
101
,
"Experimental"
:
false
,
"Features"
:
[
"OnlineMappingFeature"
,
"OnlineGeocodingFeature"
,
"ReverseGeocodingFeature"
]
}
libs/QtLocationQGC/src/OpenPilotMaps.cc
0 → 100644
View file @
a900cdde
This diff is collapsed.
Click to expand it.
libs/QtLocationQGC/src/OpenPilotMaps.h
0 → 100644
View file @
a900cdde
/*=====================================================================
QGroundControl Open Source Ground Control Station
(c) 2009, 2015 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
This file is part of the QGROUNDCONTROL project
QGROUNDCONTROL is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
QGROUNDCONTROL is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with QGROUNDCONTROL. If not, see <http://www.gnu.org/licenses/>.
======================================================================*/
/**
* @file
* @brief QGC Open Pilot Mapping Tools
* @author Gus Grubba <mavlink@grubba.com>
* Original work: The OpenPilot Team, http://www.openpilot.org Copyright (C) 2012.
*/
#ifndef OPENPILOTTOOLS_H
#define OPENPILOTTOOLS_H
#include <QString>
#include <QPoint>
#include <QByteArray>
#include <QNetworkProxy>
#include <QMutex>
namespace
OpenPilot
{
enum
MapType
{
GoogleMap
=
1
,
GoogleSatellite
=
4
,
GoogleLabels
=
8
,
GoogleTerrain
=
16
,
GoogleHybrid
=
20
,
GoogleMapChina
=
22
,
GoogleSatelliteChina
=
24
,
GoogleLabelsChina
=
26
,
GoogleTerrainChina
=
28
,
GoogleHybridChina
=
29
,
OpenStreetMap
=
32
,
OpenStreetOsm
=
33
,
OpenStreetMapSurfer
=
34
,
OpenStreetMapSurferTerrain
=
35
,
YahooMap
=
64
,
YahooSatellite
=
128
,
YahooLabels
=
256
,
YahooHybrid
=
333
,
BingMap
=
444
,
BingSatellite
=
555
,
BingHybrid
=
666
,
ArcGIS_Map
=
777
,
ArcGIS_Satellite
=
788
,
ArcGIS_ShadedRelief
=
799
,
ArcGIS_Terrain
=
811
,
ArcGIS_MapsLT_Map
=
1000
,
ArcGIS_MapsLT_OrtoFoto
=
1001
,
ArcGIS_MapsLT_Map_Labels
=
1002
,
ArcGIS_MapsLT_Map_Hybrid
=
1003
,
PergoTurkeyMap
=
2001
,
SigPacSpainMap
=
3001
,
GoogleMapKorea
=
4001
,
GoogleSatelliteKorea
=
4002
,
GoogleLabelsKorea
=
4003
,
GoogleHybridKorea
=
4005
,
YandexMapRu
=
5000
};
class
ProviderStrings
{
public:
ProviderStrings
();
static
const
QString
levelsForSigPacSpainMap
[];
QString
GoogleMapsAPIKey
;
// Google version strings
QString
VersionGoogleMap
;
QString
VersionGoogleSatellite
;
QString
VersionGoogleLabels
;
QString
VersionGoogleTerrain
;
QString
SecGoogleWord
;
// Google (China) version strings
QString
VersionGoogleMapChina
;
QString
VersionGoogleSatelliteChina
;
QString
VersionGoogleLabelsChina
;
QString
VersionGoogleTerrainChina
;
// Google (Korea) version strings
QString
VersionGoogleMapKorea
;
QString
VersionGoogleSatelliteKorea
;
QString
VersionGoogleLabelsKorea
;
/// <summary>
/// Google Maps API generated using http://greatmaps.codeplex.com/
/// from http://code.google.com/intl/en-us/apis/maps/signup.html
/// </summary>
// Yahoo version strings
QString
VersionYahooMap
;
QString
VersionYahooSatellite
;
QString
VersionYahooLabels
;
// BingMaps
QString
VersionBingMaps
;
// YandexMap
QString
VersionYandexMap
;
/// <summary>
/// Bing Maps Customer Identification, more info here
/// http://msdn.microsoft.com/en-us/library/bb924353.aspx
/// </summary>
QString
BingMapsClientToken
;
};
class
UrlFactory
:
public
QObject
,
public
ProviderStrings
{
Q_OBJECT
public:
QByteArray
UserAgent
;
QNetworkProxy
Proxy
;
UrlFactory
();
~
UrlFactory
();
QString
makeImageUrl
(
const
MapType
&
type
,
const
QPoint
&
pos
,
const
int
&
zoom
,
const
QString
&
language
);
private:
void
_getSecGoogleWords
(
const
QPoint
&
pos
,
QString
&
sec1
,
QString
&
sec2
);
int
_getServerNum
(
const
QPoint
&
pos
,
const
int
&
max
)
const
;
void
_tryCorrectGoogleVersions
();
QString
_tileXYToQuadKey
(
const
int
&
tileX
,
const
int
&
tileY
,
const
int
&
levelOfDetail
)
const
;
bool
_isCorrectedGoogleVersions
;
bool
_correctGoogleVersions
;
int
_timeout
;
QMutex
mutex
;
static
const
double
EarthRadiusKm
;
};
}
#endif // FOO_H
libs/QtLocationQGC/src/qgeocodereplyqgc.cpp
0 → 100644
View file @
a900cdde
This diff is collapsed.
Click to expand it.
libs/QtLocationQGC/src/qgeocodereplyqgc.h
0 → 100644
View file @
a900cdde
/****************************************************************************
**
** Copyright (C) 2013 Aaron McCarthy <mccarthy.aaron@gmail.com>
** Contact: http://www.qt-project.org/legal
**
** This file is part of the QtLocation module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Digia. For licensing terms and
** conditions see http://qt.digia.com/licensing. For further information
** use the contact form at http://qt.digia.com/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** In addition, as a special exception, Digia gives you certain additional
** rights. These rights are described in the Digia Qt LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3.0 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU General Public License version 3.0 requirements will be
** met: http://www.gnu.org/copyleft/gpl.html.
**
**
** $QT_END_LICENSE$
**
** 2015.4.4
** Adapted for use with QGroundControl
**
** Gus Grubba <mavlink@grubba.com>
**
****************************************************************************/
#ifndef QGEOCODEREPLYGOOGLE_H
#define QGEOCODEREPLYGOOGLE_H
#include <QtNetwork/QNetworkReply>
#include <QtLocation/QGeoCodeReply>
QT_BEGIN_NAMESPACE
class
QGeoCodeReplyQGC
:
public
QGeoCodeReply
{
Q_OBJECT
public:
explicit
QGeoCodeReplyQGC
(
QNetworkReply
*
reply
,
QObject
*
parent
=
0
);
~
QGeoCodeReplyQGC
();
void
abort
();
private
Q_SLOTS
:
void
networkReplyFinished
();
void
networkReplyError
(
QNetworkReply
::
NetworkError
error
);
private:
QNetworkReply
*
m_reply
;
};
QT_END_NAMESPACE
#endif // QGEOCODEREPLYGOOGLE_H
libs/QtLocationQGC/src/qgeocodingmanagerengineqgc.cpp
0 → 100644
View file @
a900cdde
/****************************************************************************
**
** Copyright (C) 2013 Aaron McCarthy <mccarthy.aaron@gmail.com>
** Contact: http://www.qt-project.org/legal
**
** This file is part of the QtLocation module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Digia. For licensing terms and
** conditions see http://qt.digia.com/licensing. For further information
** use the contact form at http://qt.digia.com/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** In addition, as a special exception, Digia gives you certain additional
** rights. These rights are described in the Digia Qt LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3.0 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU General Public License version 3.0 requirements will be
** met: http://www.gnu.org/copyleft/gpl.html.
**
**
** $QT_END_LICENSE$
**
** 2015.4.4
** Adapted for use with QGroundControl
**
** Gus Grubba <mavlink@grubba.com>
**
****************************************************************************/
#include <QtCore/QVariantMap>
#include <QtCore/QUrl>
#include <QtCore/QUrlQuery>
#include <QtCore/QLocale>
#include <QtNetwork/QNetworkAccessManager>
#include <QtNetwork/QNetworkRequest>
#include <QtPositioning/QGeoCoordinate>
#include <QtPositioning/QGeoAddress>
#include <QtPositioning/QGeoShape>
#include <QtPositioning/QGeoRectangle>
#include "qgeocodingmanagerengineqgc.h"
#include "qgeocodereplyqgc.h"
QT_BEGIN_NAMESPACE
static
QString
addressToQuery
(
const
QGeoAddress
&
address
)
{
return
address
.
street
()
+
QStringLiteral
(
", "
)
+
address
.
district
()
+
QStringLiteral
(
", "
)
+
address
.
city
()
+
QStringLiteral
(
", "
)
+
address
.
state
()
+
QStringLiteral
(
", "
)
+
address
.
country
();
}
static
QString
boundingBoxToLtrb
(
const
QGeoRectangle
&
rect
)
{
return
QString
::
number
(
rect
.
topLeft
().
longitude
())
+
QLatin1Char
(
','
)
+
QString
::
number
(
rect
.
topLeft
().
latitude
())
+
QLatin1Char
(
','
)
+
QString
::
number
(
rect
.
bottomRight
().
longitude
())
+
QLatin1Char
(
','
)
+
QString
::
number
(
rect
.
bottomRight
().
latitude
());
}
QGeoCodingManagerEngineQGC
::
QGeoCodingManagerEngineQGC
(
const
QVariantMap
&
parameters
,
QGeoServiceProvider
::
Error
*
error
,
QString
*
errorString
)
:
QGeoCodingManagerEngine
(
parameters
),
m_networkManager
(
new
QNetworkAccessManager
(
this
))
{
if
(
parameters
.
contains
(
QStringLiteral
(
"useragent"
)))
m_userAgent
=
parameters
.
value
(
QStringLiteral
(
"useragent"
)).
toString
().
toLatin1
();
else
m_userAgent
=
"Qt Location based application"
;
*
error
=
QGeoServiceProvider
::
NoError
;
errorString
->
clear
();
}
QGeoCodingManagerEngineQGC
::~
QGeoCodingManagerEngineQGC
()
{
}
QGeoCodeReply
*
QGeoCodingManagerEngineQGC
::
geocode
(
const
QGeoAddress
&
address
,
const
QGeoShape
&
bounds
)
{
return
geocode
(
addressToQuery
(
address
),
-
1
,
-
1
,
bounds
);
}
QGeoCodeReply
*
QGeoCodingManagerEngineQGC
::
geocode
(
const
QString
&
address
,
int
limit
,
int
offset
,
const
QGeoShape
&
bounds
)
{
Q_UNUSED
(
limit
);
Q_UNUSED
(
offset
);
QNetworkRequest
request
;
request
.
setRawHeader
(
"User-Agent"
,
m_userAgent
);
QUrl
url
(
QStringLiteral
(
"http://maps.googleapis.com/maps/api/geocode/json"
));
QUrlQuery
query
;
query
.
addQueryItem
(
QStringLiteral
(
"sensor"
),
QStringLiteral
(
"false"
));
query
.
addQueryItem
(
QStringLiteral
(
"language"
),
locale
().
name
().
left
(
2
));
query
.
addQueryItem
(
QStringLiteral
(
"address"
),
address
);
if
(
bounds
.
type
()
==
QGeoShape
::
RectangleType
)
{
query
.
addQueryItem
(
QStringLiteral
(
"bounds"
),
boundingBoxToLtrb
(
bounds
));
}
url
.
setQuery
(
query
);
request
.
setUrl
(
url
);
qDebug
()
<<
url
;
QNetworkReply
*
reply
=
m_networkManager
->
get
(
request
);
reply
->
setParent
(
0
);
QGeoCodeReplyQGC
*
geocodeReply
=
new
QGeoCodeReplyQGC
(
reply
);
connect
(
geocodeReply
,
SIGNAL
(
finished
()),
this
,
SLOT
(
replyFinished
()));
connect
(
geocodeReply
,
SIGNAL
(
error
(
QGeoCodeReply
::
Error
,
QString
)),
this
,
SLOT
(
replyError
(
QGeoCodeReply
::
Error
,
QString
)));
return
geocodeReply
;
}
QGeoCodeReply
*
QGeoCodingManagerEngineQGC
::
reverseGeocode
(
const
QGeoCoordinate
&
coordinate
,
const
QGeoShape
&
bounds
)
{
Q_UNUSED
(
bounds
)
QNetworkRequest
request
;
request
.
setRawHeader
(
"User-Agent"
,
m_userAgent
);
QUrl
url
(
QStringLiteral
(
"http://maps.googleapis.com/maps/api/geocode/json"
));
QUrlQuery
query
;
query
.
addQueryItem
(
QStringLiteral
(
"sensor"
),
QStringLiteral
(
"false"
));
query
.
addQueryItem
(
QStringLiteral
(
"language"
),
locale
().
name
().
left
(
2
));
query
.
addQueryItem
(
QStringLiteral
(
"latlng"
),
QStringLiteral
(
"%1,%2"
)
.
arg
(
coordinate
.
latitude
())
.
arg
(
coordinate
.
longitude
()));
url
.
setQuery
(
query
);
request
.
setUrl
(
url
);
qDebug
()
<<
url
;
QNetworkReply
*
reply
=
m_networkManager
->
get
(
request
);
reply
->
setParent
(
0
);
QGeoCodeReplyQGC
*
geocodeReply
=
new
QGeoCodeReplyQGC
(
reply
);
connect
(
geocodeReply
,
SIGNAL
(
finished
()),
this
,
SLOT
(
replyFinished
()));
connect
(
geocodeReply
,
SIGNAL
(
error
(
QGeoCodeReply
::
Error
,
QString
)),
this
,
SLOT
(
replyError
(
QGeoCodeReply
::
Error
,
QString
)));
return
geocodeReply
;
}
void
QGeoCodingManagerEngineQGC
::
replyFinished
()
{
QGeoCodeReply
*
reply
=
qobject_cast
<
QGeoCodeReply
*>
(
sender
());
if
(
reply
)
emit
finished
(
reply
);
}
void
QGeoCodingManagerEngineQGC
::
replyError
(
QGeoCodeReply
::
Error
errorCode
,
const
QString
&
errorString
)
{
QGeoCodeReply
*
reply
=
qobject_cast
<
QGeoCodeReply
*>
(
sender
());
if
(
reply
)
emit
error
(
reply
,
errorCode
,
errorString
);
}
QT_END_NAMESPACE
libs/QtLocationQGC/src/qgeocodingmanagerengineqgc.h
0 → 100644
View file @
a900cdde
/****************************************************************************
**
** Copyright (C) 2013 Aaron McCarthy <mccarthy.aaron@gmail.com>
** Contact: http://www.qt-project.org/legal
**
** This file is part of the QtLocation module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Digia. For licensing terms and
** conditions see http://qt.digia.com/licensing. For further information
** use the contact form at http://qt.digia.com/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** In addition, as a special exception, Digia gives you certain additional
** rights. These rights are described in the Digia Qt LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3.0 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU General Public License version 3.0 requirements will be
** met: http://www.gnu.org/copyleft/gpl.html.
**
**
** $QT_END_LICENSE$
**
** 2015.4.4
** Adapted for use with QGroundControl
**
** Gus Grubba <mavlink@grubba.com>
**
****************************************************************************/
#ifndef QGEOCODINGMANAGERENGINEGOOGLE_H
#define QGEOCODINGMANAGERENGINEGOOGLE_H
#include <QtLocation/QGeoServiceProvider>
#include <QtLocation/QGeoCodingManagerEngine>
#include <QtLocation/QGeoCodeReply>
QT_BEGIN_NAMESPACE
class
QNetworkAccessManager
;
class
QGeoCodingManagerEngineQGC
:
public
QGeoCodingManagerEngine
{
Q_OBJECT
public:
QGeoCodingManagerEngineQGC
(
const
QVariantMap
&
parameters
,
QGeoServiceProvider
::
Error
*
error
,
QString
*
errorString
);
~
QGeoCodingManagerEngineQGC
();
QGeoCodeReply
*
geocode
(
const
QGeoAddress
&
address
,
const
QGeoShape
&
bounds
)
Q_DECL_OVERRIDE
;
QGeoCodeReply
*
geocode
(
const
QString
&
address
,
int
limit
,
int
offset
,
const
QGeoShape
&
bounds
)
Q_DECL_OVERRIDE
;
QGeoCodeReply
*
reverseGeocode
(
const
QGeoCoordinate
&
coordinate
,
const
QGeoShape
&
bounds
)
Q_DECL_OVERRIDE
;
private
Q_SLOTS
:
void
replyFinished
();
void
replyError
(
QGeoCodeReply
::
Error
errorCode
,
const
QString
&
errorString
);
private:
QNetworkAccessManager
*
m_networkManager
;
QByteArray
m_userAgent
;
};
QT_END_NAMESPACE
#endif // QGEOCODINGMANAGERENGINEGOOGLE_H
libs/QtLocationQGC/src/qgeomapreplyqgc.cpp
0 → 100644
View file @
a900cdde
/****************************************************************************
**
** Copyright (C) 2013 Aaron McCarthy <mccarthy.aaron@gmail.com>
** Contact: http://www.qt-project.org/legal
**
** This file is part of the QtLocation module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Digia. For licensing terms and
** conditions see http://qt.digia.com/licensing. For further information
** use the contact form at http://qt.digia.com/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** In addition, as a special exception, Digia gives you certain additional
** rights. These rights are described in the Digia Qt LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3.0 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU General Public License version 3.0 requirements will be
** met: http://www.gnu.org/copyleft/gpl.html.
**
**
** $QT_END_LICENSE$
**
** 2015.4.4
** Adapted for use with QGroundControl
**
** Gus Grubba <mavlink@grubba.com>
**
****************************************************************************/
#include <QtLocation/private/qgeotilespec_p.h>
#include "qgeomapreplyqgc.h"
#include "OpenPilotMaps.h"
QGeoMapReplyQGC
::
QGeoMapReplyQGC
(
QNetworkReply
*
reply
,
const
QGeoTileSpec
&
spec
,
QObject
*
parent
)
:
QGeoTiledMapReply
(
spec
,
parent
)
,
m_reply
(
reply
)
{
connect
(
m_reply
,
SIGNAL
(
finished
()),
this
,
SLOT
(
networkReplyFinished
()));
connect
(
m_reply
,
SIGNAL
(
error
(
QNetworkReply
::
NetworkError
)),
this
,
SLOT
(
networkReplyError
(
QNetworkReply
::
NetworkError
)));
connect
(
m_reply
,
SIGNAL
(
destroyed
()),
this
,
SLOT
(
replyDestroyed
()));
}
QGeoMapReplyQGC
::~
QGeoMapReplyQGC
()
{
if
(
m_reply
)
{
m_reply
->
deleteLater
();
m_reply
=
0
;
}
}
void
QGeoMapReplyQGC
::
abort
()
{
if
(
!
m_reply
)
return
;
m_reply
->
abort
();
}
QNetworkReply
*
QGeoMapReplyQGC
::
networkReply
()
const
{
return
m_reply
;
}
void
QGeoMapReplyQGC
::
replyDestroyed
()
{
m_reply
=
0
;
}
void
QGeoMapReplyQGC
::
networkReplyFinished
()
{
if
(
!
m_reply
)
return
;
if
(
m_reply
->
error
()
!=
QNetworkReply
::
NoError
)
return
;
QByteArray
a
=
m_reply
->
readAll
();
setMapImageData
(
a
);
if
(
a
.
size
()
>
2
)
{
if
((
char
)
a
[
0
]
==
(
char
)
0xff
&&
(
char
)
a
[
1
]
==
(
char
)
0xd8
)
setMapImageFormat
(
"jpg"
);
else
if
((
char
)
a
[
0
]
==
(
char
)
0x89
&&
(
char
)
a
[
1
]
==
(
char
)
0x50
)
setMapImageFormat
(
"png"
);
else
{
switch
((
OpenPilot
::
MapType
)
tileSpec
().
mapId
())
{
case
OpenPilot
:
:
GoogleMap
:
case
OpenPilot
:
:
GoogleLabels
:
case
OpenPilot
:
:
GoogleTerrain
:
case
OpenPilot
:
:
GoogleHybrid
:
case
OpenPilot
:
:
BingMap
:
case
OpenPilot
:
:
OpenStreetMap
:
setMapImageFormat
(
"png"
);
break
;
case
OpenPilot
:
:
GoogleSatellite
:
case
OpenPilot
:
:
BingSatellite
:
case
OpenPilot
:
:
BingHybrid
:
setMapImageFormat
(
"jpg"
);
break
;
default:
qWarning
(
"Unknown map id %d"
,
tileSpec
().
mapId
());
break
;
}
}
}
setFinished
(
true
);
m_reply
->
deleteLater
();
m_reply
=
0
;
}
void
QGeoMapReplyQGC
::
networkReplyError
(
QNetworkReply
::
NetworkError
error
)
{
if
(
!
m_reply
)
return
;
if
(
error
!=
QNetworkReply
::
OperationCanceledError
)
setError
(
QGeoTiledMapReply
::
CommunicationError
,
m_reply
->
errorString
());
setFinished
(
true
);
m_reply
->
deleteLater
();
m_reply
=
0
;
}
libs/QtLocationQGC/src/qgeomapreplyqgc.h
0 → 100644
View file @
a900cdde
/****************************************************************************
**
** Copyright (C) 2013 Aaron McCarthy <mccarthy.aaron@gmail.com>
** Contact: http://www.qt-project.org/legal
**