summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/location/declarativemaps/qdeclarativegeocodemodel.cpp2
-rw-r--r--src/location/doc/src/plugins/osm.qdoc2
-rw-r--r--src/location/maps/qgeocodereply.cpp22
-rw-r--r--src/location/maps/qgeocodereply.h2
-rw-r--r--src/location/maps/qgeocodereply_p.h10
-rw-r--r--src/plugins/geoservices/osm/qgeocodereplyosm.cpp19
-rw-r--r--src/plugins/geoservices/osm/qgeocodereplyosm.h12
-rw-r--r--src/plugins/geoservices/osm/qgeocodingmanagerengineosm.cpp16
-rw-r--r--src/plugins/geoservices/osm/qgeocodingmanagerengineosm.h1
9 files changed, 82 insertions, 4 deletions
diff --git a/src/location/declarativemaps/qdeclarativegeocodemodel.cpp b/src/location/declarativemaps/qdeclarativegeocodemodel.cpp
index 43ce95a9..a73f9341 100644
--- a/src/location/declarativemaps/qdeclarativegeocodemodel.cpp
+++ b/src/location/declarativemaps/qdeclarativegeocodemodel.cpp
@@ -42,6 +42,7 @@
#include <QtPositioning/QGeoCircle>
#include <QtLocation/QGeoServiceProvider>
#include <QtLocation/QGeoCodingManager>
+#include <QtLocation/private/qgeocodereply_p.h>
#include <QtPositioning/QGeoPolygon>
QT_BEGIN_NAMESPACE
@@ -389,6 +390,7 @@ void QDeclarativeGeocodeModel::geocodeFinished(QGeoCodeReply *reply)
reply->deleteLater();
reply_ = 0;
int oldCount = declarativeLocations_.count();
+ // const QVariantMap &extraData = QGeoCodeReplyPrivate::get(*reply)->extraData();
setLocations(reply->locations());
setError(NoError, QString());
setStatus(QDeclarativeGeocodeModel::Ready);
diff --git a/src/location/doc/src/plugins/osm.qdoc b/src/location/doc/src/plugins/osm.qdoc
index 649d3bed..9e0a9842 100644
--- a/src/location/doc/src/plugins/osm.qdoc
+++ b/src/location/doc/src/plugins/osm.qdoc
@@ -69,6 +69,8 @@ a prefix.
\li Url string set when making network requests to the geocoding server. This parameter should be set to a
valid server url with the correct osm API. If not specified the default \l {http://nominatim.openstreetmap.org/}{url} will be used.
\note The API documentation is available at \l {https://wiki.openstreetmap.org/wiki/Nominatim}{Project OSM Nominatim}.
+ \li osm.geocoding.debug_query
+ \li Instructs the plugin to inject the query url to nominatim into the geocode reply, for debugging purposes.
\row
\li osm.mapping.cache.directory
\li Absolute path to map tile cache directory used as network disk cache.
diff --git a/src/location/maps/qgeocodereply.cpp b/src/location/maps/qgeocodereply.cpp
index 5fefb6fe..9fbede9c 100644
--- a/src/location/maps/qgeocodereply.cpp
+++ b/src/location/maps/qgeocodereply.cpp
@@ -97,6 +97,13 @@ QGeoCodeReply::QGeoCodeReply(QObject *parent)
: QObject(parent),
d_ptr(new QGeoCodeReplyPrivate()) {}
+QGeoCodeReply::QGeoCodeReply(QGeoCodeReplyPrivate &dd, QObject *parent)
+ : QObject(parent),
+ d_ptr(&dd)
+{
+
+}
+
/*!
Constructs a geocode reply with a given \a error and \a errorString and the specified \a parent.
*/
@@ -335,4 +342,19 @@ QGeoCodeReplyPrivate::QGeoCodeReplyPrivate(QGeoCodeReply::Error error, const QSt
QGeoCodeReplyPrivate::~QGeoCodeReplyPrivate() {}
+QVariantMap QGeoCodeReplyPrivate::extraData() const
+{
+ return QVariantMap();
+}
+
+const QGeoCodeReplyPrivate *QGeoCodeReplyPrivate::get(const QGeoCodeReply &reply)
+{
+ return reply.d_ptr;
+}
+
+QGeoCodeReplyPrivate *QGeoCodeReplyPrivate::get(QGeoCodeReply &reply)
+{
+ return reply.d_ptr;
+}
+
QT_END_NAMESPACE
diff --git a/src/location/maps/qgeocodereply.h b/src/location/maps/qgeocodereply.h
index c41e740d..c2395f10 100644
--- a/src/location/maps/qgeocodereply.h
+++ b/src/location/maps/qgeocodereply.h
@@ -85,6 +85,7 @@ Q_SIGNALS:
protected:
explicit QGeoCodeReply(QObject *parent = nullptr);
+ explicit QGeoCodeReply(QGeoCodeReplyPrivate &dd, QObject *parent = nullptr);
void setError(Error error, const QString &errorString);
void setFinished(bool finished);
@@ -99,6 +100,7 @@ protected:
private:
QGeoCodeReplyPrivate *d_ptr;
Q_DISABLE_COPY(QGeoCodeReply)
+ friend class QGeoCodeReplyPrivate;
};
QT_END_NAMESPACE
diff --git a/src/location/maps/qgeocodereply_p.h b/src/location/maps/qgeocodereply_p.h
index fefe7883..3f77497b 100644
--- a/src/location/maps/qgeocodereply_p.h
+++ b/src/location/maps/qgeocodereply_p.h
@@ -48,22 +48,28 @@
// We mean it.
//
+#include <QtLocation/private/qlocationglobal_p.h>
#include "qgeocodereply.h"
#include "qgeoshape.h"
#include <QList>
+#include <QVariantMap>
QT_BEGIN_NAMESPACE
class QGeoLocation;
-class QGeoCodeReplyPrivate
+class Q_LOCATION_PRIVATE_EXPORT QGeoCodeReplyPrivate
{
public:
QGeoCodeReplyPrivate();
QGeoCodeReplyPrivate(QGeoCodeReply::Error error, const QString &errorString);
- ~QGeoCodeReplyPrivate();
+ virtual ~QGeoCodeReplyPrivate();
+
+ virtual QVariantMap extraData() const;
+ static const QGeoCodeReplyPrivate *get(const QGeoCodeReply &reply);
+ static QGeoCodeReplyPrivate *get(QGeoCodeReply &reply);
QGeoCodeReply::Error error;
QString errorString;
diff --git a/src/plugins/geoservices/osm/qgeocodereplyosm.cpp b/src/plugins/geoservices/osm/qgeocodereplyosm.cpp
index a30601d0..11bdaa6c 100644
--- a/src/plugins/geoservices/osm/qgeocodereplyosm.cpp
+++ b/src/plugins/geoservices/osm/qgeocodereplyosm.cpp
@@ -50,7 +50,7 @@
QT_BEGIN_NAMESPACE
QGeoCodeReplyOsm::QGeoCodeReplyOsm(QNetworkReply *reply, QObject *parent)
-: QGeoCodeReply(parent)
+: QGeoCodeReply(*new QGeoCodeReplyOsmPrivate, parent)
{
if (!reply) {
setError(UnknownError, QStringLiteral("Null reply"));
@@ -171,4 +171,21 @@ void QGeoCodeReplyOsm::networkReplyError(QNetworkReply::NetworkError error)
setError(QGeoCodeReply::CommunicationError, reply->errorString());
}
+QGeoCodeReplyOsmPrivate::QGeoCodeReplyOsmPrivate()
+{
+
+}
+
+QGeoCodeReplyOsmPrivate::~QGeoCodeReplyOsmPrivate()
+{
+
+}
+
+QVariantMap QGeoCodeReplyOsmPrivate::extraData() const
+{
+ return m_extraData;
+}
+
QT_END_NAMESPACE
+
+
diff --git a/src/plugins/geoservices/osm/qgeocodereplyosm.h b/src/plugins/geoservices/osm/qgeocodereplyosm.h
index 0847f58c..b81b8b84 100644
--- a/src/plugins/geoservices/osm/qgeocodereplyosm.h
+++ b/src/plugins/geoservices/osm/qgeocodereplyosm.h
@@ -42,6 +42,7 @@
#include <QtNetwork/QNetworkReply>
#include <QtLocation/QGeoCodeReply>
+#include <QtLocation/private/qgeocodereply_p.h>
QT_BEGIN_NAMESPACE
@@ -58,6 +59,17 @@ private Q_SLOTS:
void networkReplyError(QNetworkReply::NetworkError error);
};
+class QGeoCodeReplyOsmPrivate : public QGeoCodeReplyPrivate
+{
+public:
+ QGeoCodeReplyOsmPrivate();
+ ~QGeoCodeReplyOsmPrivate();
+ QVariantMap extraData() const override;
+
+ bool m_includeGeometry = false;
+ QVariantMap m_extraData;
+};
+
QT_END_NAMESPACE
#endif // QGEOCODEREPLYOSM_H
diff --git a/src/plugins/geoservices/osm/qgeocodingmanagerengineosm.cpp b/src/plugins/geoservices/osm/qgeocodingmanagerengineosm.cpp
index d7751287..9403cfa8 100644
--- a/src/plugins/geoservices/osm/qgeocodingmanagerengineosm.cpp
+++ b/src/plugins/geoservices/osm/qgeocodingmanagerengineosm.cpp
@@ -38,7 +38,6 @@
****************************************************************************/
#include "qgeocodingmanagerengineosm.h"
-#include "qgeocodereplyosm.h"
#include <QtCore/QVariantMap>
#include <QtCore/QUrl>
@@ -50,6 +49,8 @@
#include <QtPositioning/QGeoAddress>
#include <QtPositioning/QGeoShape>
#include <QtPositioning/QGeoRectangle>
+#include "qgeocodereplyosm.h"
+
QT_BEGIN_NAMESPACE
@@ -85,6 +86,9 @@ QGeoCodingManagerEngineOsm::QGeoCodingManagerEngineOsm(const QVariantMap &parame
else
m_urlPrefix = QStringLiteral("https://nominatim.openstreetmap.org");
+ if (parameters.contains(QStringLiteral("osm.geocoding.debug_query")))
+ m_debugQuery = parameters.value(QStringLiteral("osm.geocoding.debug_query")).toBool();
+
*error = QGeoServiceProvider::NoError;
errorString->clear();
}
@@ -126,6 +130,11 @@ QGeoCodeReply *QGeoCodingManagerEngineOsm::geocode(const QString &address, int l
QNetworkReply *reply = m_networkManager->get(request);
QGeoCodeReplyOsm *geocodeReply = new QGeoCodeReplyOsm(reply, this);
+ if (m_debugQuery) {
+ QGeoCodeReplyOsmPrivate *replyPrivate
+ = static_cast<QGeoCodeReplyOsmPrivate *>(QGeoCodeReplyPrivate::get(*geocodeReply));
+ replyPrivate->m_extraData["request_url"] = url;
+ }
connect(geocodeReply, SIGNAL(finished()), this, SLOT(replyFinished()));
connect(geocodeReply, SIGNAL(error(QGeoCodeReply::Error,QString)),
@@ -157,6 +166,11 @@ QGeoCodeReply *QGeoCodingManagerEngineOsm::reverseGeocode(const QGeoCoordinate &
QNetworkReply *reply = m_networkManager->get(request);
QGeoCodeReplyOsm *geocodeReply = new QGeoCodeReplyOsm(reply, this);
+ if (m_debugQuery) {
+ QGeoCodeReplyOsmPrivate *replyPrivate
+ = static_cast<QGeoCodeReplyOsmPrivate *>(QGeoCodeReplyPrivate::get(*geocodeReply));
+ replyPrivate->m_extraData["request_url"] = url;
+ }
connect(geocodeReply, SIGNAL(finished()), this, SLOT(replyFinished()));
connect(geocodeReply, SIGNAL(error(QGeoCodeReply::Error,QString)),
diff --git a/src/plugins/geoservices/osm/qgeocodingmanagerengineosm.h b/src/plugins/geoservices/osm/qgeocodingmanagerengineosm.h
index 0fec49de..2bc15715 100644
--- a/src/plugins/geoservices/osm/qgeocodingmanagerengineosm.h
+++ b/src/plugins/geoservices/osm/qgeocodingmanagerengineosm.h
@@ -71,6 +71,7 @@ private:
QNetworkAccessManager *m_networkManager;
QByteArray m_userAgent;
QString m_urlPrefix;
+ bool m_debugQuery = false;
};
QT_END_NAMESPACE