summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAaron McCarthy <mccarthy.aaron@gmail.com>2012-06-23 22:12:07 +1000
committerAaron McCarthy <mccarthy.aaron@gmail.com>2013-02-22 10:36:51 +0100
commited7d22bc48193fb901b610518dba26e83f7ee78e (patch)
treea85121e5c442b4ce5e6eae215e0fe5c50b20dabe
parent9bc6ac130031e4ca72fc746b020e68e951d1490d (diff)
downloadqtlocation-ed7d22bc48193fb901b610518dba26e83f7ee78e.tar.gz
Add geocoding support to OSM plugin.
Supports: * geocoding * reverse geocoding * locale results Change-Id: I1e7f5b5013e3ca56b7abe92d97c8cebc34c21cdd Reviewed-by: Alex <ablasche@gmail.com>
-rw-r--r--src/plugins/geoservices/osm/osm.pro8
-rw-r--r--src/plugins/geoservices/osm/osm_plugin.json4
-rw-r--r--src/plugins/geoservices/osm/qgeocodereplyosm.cpp189
-rw-r--r--src/plugins/geoservices/osm/qgeocodereplyosm.h70
-rw-r--r--src/plugins/geoservices/osm/qgeocodingmanagerengineosm.cpp179
-rw-r--r--src/plugins/geoservices/osm/qgeocodingmanagerengineosm.h78
-rw-r--r--src/plugins/geoservices/osm/qgeoserviceproviderpluginosm.cpp7
7 files changed, 527 insertions, 8 deletions
diff --git a/src/plugins/geoservices/osm/osm.pro b/src/plugins/geoservices/osm/osm.pro
index ea26a964..96b51068 100644
--- a/src/plugins/geoservices/osm/osm.pro
+++ b/src/plugins/geoservices/osm/osm.pro
@@ -8,13 +8,17 @@ HEADERS += \
qgeoserviceproviderpluginosm.h \
qgeotiledmappingmanagerengineosm.h \
qgeotilefetcherosm.h \
- qgeomapreplyosm.h
+ qgeomapreplyosm.h \
+ qgeocodingmanagerengineosm.h \
+ qgeocodereplyosm.h
SOURCES += \
qgeoserviceproviderpluginosm.cpp \
qgeotiledmappingmanagerengineosm.cpp \
qgeotilefetcherosm.cpp \
- qgeomapreplyosm.cpp
+ qgeomapreplyosm.cpp \
+ qgeocodingmanagerengineosm.cpp \
+ qgeocodereplyosm.cpp
OTHER_FILES += \
osm_plugin.json
diff --git a/src/plugins/geoservices/osm/osm_plugin.json b/src/plugins/geoservices/osm/osm_plugin.json
index 690140a4..f004d8b7 100644
--- a/src/plugins/geoservices/osm/osm_plugin.json
+++ b/src/plugins/geoservices/osm/osm_plugin.json
@@ -4,6 +4,8 @@
"Version": 100,
"Experimental": false,
"Features": [
- "OnlineMappingFeature"
+ "OnlineMappingFeature",
+ "OnlineGeocodingFeature",
+ "ReverseGeocodingFeature"
]
}
diff --git a/src/plugins/geoservices/osm/qgeocodereplyosm.cpp b/src/plugins/geoservices/osm/qgeocodereplyosm.cpp
new file mode 100644
index 00000000..dfb656dd
--- /dev/null
+++ b/src/plugins/geoservices/osm/qgeocodereplyosm.cpp
@@ -0,0 +1,189 @@
+/****************************************************************************
+**
+** 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$
+**
+****************************************************************************/
+
+#include "qgeocodereplyosm.h"
+
+#include <QtCore/QJsonDocument>
+#include <QtCore/QJsonObject>
+#include <QtCore/QJsonArray>
+#include <QtLocation/QGeoCoordinate>
+#include <QtLocation/QGeoAddress>
+#include <QtLocation/QGeoLocation>
+#include <QtLocation/QGeoRectangle>
+
+QT_BEGIN_NAMESPACE
+
+QGeocodeReplyOsm::QGeocodeReplyOsm(QNetworkReply *reply, QObject *parent)
+: QGeocodeReply(parent), m_reply(reply)
+{
+ connect(m_reply, SIGNAL(finished()), this, SLOT(networkReplyFinished()));
+ connect(m_reply, SIGNAL(error(QNetworkReply::NetworkError)),
+ this, SLOT(networkReplyError(QNetworkReply::NetworkError)));
+
+ setLimit(1);
+ setOffset(0);
+}
+
+QGeocodeReplyOsm::~QGeocodeReplyOsm()
+{
+ if (m_reply)
+ m_reply->deleteLater();
+}
+
+void QGeocodeReplyOsm::abort()
+{
+ if (!m_reply)
+ return;
+
+ m_reply->abort();
+
+ m_reply->deleteLater();
+ m_reply = 0;
+}
+
+void QGeocodeReplyOsm::networkReplyFinished()
+{
+ if (!m_reply)
+ return;
+
+ if (m_reply->error() != QNetworkReply::NoError)
+ return;
+
+ QJsonDocument document = QJsonDocument::fromJson(m_reply->readAll());
+
+ if (document.isObject()) {
+ QJsonObject object = document.object();
+
+ QGeoCoordinate coordinate;
+
+ coordinate.setLatitude(object.value(QStringLiteral("lat")).toString().toDouble());
+ coordinate.setLongitude(object.value(QStringLiteral("lon")).toString().toDouble());
+
+ QJsonObject ao = object.value(QStringLiteral("address")).toObject();
+
+ QGeoAddress address;
+ address.setText(object.value(QStringLiteral("display_name")).toString());
+ address.setCountry(ao.value(QStringLiteral("country")).toString());
+ address.setCountryCode(ao.value(QStringLiteral("country_code")).toString());
+ address.setState(ao.value(QStringLiteral("state")).toString());
+ address.setCity(ao.value(QStringLiteral("city")).toString());
+ address.setDistrict(ao.value(QStringLiteral("suburb")).toString());
+ address.setPostalCode(ao.value(QStringLiteral("postcode")).toString());
+ address.setStreet(ao.value(QStringLiteral("road")).toString());
+
+ QGeoLocation location;
+ location.setCoordinate(coordinate);
+ location.setAddress(address);
+
+ QList<QGeoLocation> locations;
+ locations.append(location);
+
+ setLocations(locations);
+ setFinished(true);
+ } else if (document.isArray()) {
+ QJsonArray results = document.array();
+
+ QList<QGeoLocation> locations;
+
+ for (int i = 0; i < results.count(); ++i) {
+ if (!results.at(i).isObject())
+ continue;
+
+ QJsonObject object = results.at(i).toObject();
+
+ QGeoCoordinate coordinate;
+
+ coordinate.setLatitude(object.value(QStringLiteral("lat")).toString().toDouble());
+ coordinate.setLongitude(object.value(QStringLiteral("lon")).toString().toDouble());
+
+ QGeoRectangle rectangle;
+
+ if (object.contains(QStringLiteral("boundingbox"))) {
+ QJsonArray a = object.value(QStringLiteral("boundingbox")).toArray();
+ if (a.count() == 4) {
+ rectangle.setTopLeft(QGeoCoordinate(a.at(1).toString().toDouble(),
+ a.at(2).toString().toDouble()));
+ rectangle.setBottomRight(QGeoCoordinate(a.at(0).toString().toDouble(),
+ a.at(3).toString().toDouble()));
+ }
+ }
+
+ QJsonObject ao = object.value(QStringLiteral("address")).toObject();
+
+ QGeoAddress address;
+ address.setText(object.value(QStringLiteral("display_name")).toString());
+ address.setCountry(ao.value(QStringLiteral("country")).toString());
+ address.setCountryCode(ao.value(QStringLiteral("country_code")).toString());
+ address.setState(ao.value(QStringLiteral("state")).toString());
+ address.setCity(ao.value(QStringLiteral("city")).toString());
+ address.setDistrict(ao.value(QStringLiteral("suburb")).toString());
+ address.setPostalCode(ao.value(QStringLiteral("postcode")).toString());
+ address.setStreet(ao.value(QStringLiteral("road")).toString());
+
+ QGeoLocation location;
+ location.setCoordinate(coordinate);
+ location.setBoundingBox(rectangle);
+ location.setAddress(address);
+ locations.append(location);
+ }
+
+ setLocations(locations);
+ setFinished(true);
+ }
+
+ m_reply->deleteLater();
+ m_reply = 0;
+}
+
+void QGeocodeReplyOsm::networkReplyError(QNetworkReply::NetworkError error)
+{
+ Q_UNUSED(error)
+
+ if (!m_reply)
+ return;
+
+ setError(QGeocodeReply::CommunicationError, m_reply->errorString());
+
+ m_reply->deleteLater();
+ m_reply = 0;
+}
+
+QT_END_NAMESPACE
diff --git a/src/plugins/geoservices/osm/qgeocodereplyosm.h b/src/plugins/geoservices/osm/qgeocodereplyosm.h
new file mode 100644
index 00000000..669ee40d
--- /dev/null
+++ b/src/plugins/geoservices/osm/qgeocodereplyosm.h
@@ -0,0 +1,70 @@
+/****************************************************************************
+**
+** 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$
+**
+****************************************************************************/
+
+#ifndef QGEOCODEREPLYOSM_H
+#define QGEOCODEREPLYOSM_H
+
+#include <QtNetwork/QNetworkReply>
+#include <QtLocation/QGeocodeReply>
+
+QT_BEGIN_NAMESPACE
+
+class QGeocodeReplyOsm : public QGeocodeReply
+{
+ Q_OBJECT
+
+public:
+ explicit QGeocodeReplyOsm(QNetworkReply *reply, QObject *parent = 0);
+ ~QGeocodeReplyOsm();
+
+ void abort();
+
+private Q_SLOTS:
+ void networkReplyFinished();
+ void networkReplyError(QNetworkReply::NetworkError error);
+
+private:
+ QNetworkReply *m_reply;
+};
+
+QT_END_NAMESPACE
+
+#endif // QGEOCODEREPLYOSM_H
diff --git a/src/plugins/geoservices/osm/qgeocodingmanagerengineosm.cpp b/src/plugins/geoservices/osm/qgeocodingmanagerengineosm.cpp
new file mode 100644
index 00000000..4119329c
--- /dev/null
+++ b/src/plugins/geoservices/osm/qgeocodingmanagerengineosm.cpp
@@ -0,0 +1,179 @@
+/****************************************************************************
+**
+** 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$
+**
+****************************************************************************/
+
+#include "qgeocodingmanagerengineosm.h"
+#include "qgeocodereplyosm.h"
+
+#include <QtCore/QVariantMap>
+#include <QtCore/QUrl>
+#include <QtCore/QUrlQuery>
+#include <QtCore/QLocale>
+#include <QtNetwork/QNetworkAccessManager>
+#include <QtNetwork/QNetworkRequest>
+#include <QtLocation/QGeoCoordinate>
+#include <QtLocation/QGeoAddress>
+#include <QtLocation/QGeoShape>
+#include <QtLocation/QGeoRectangle>
+
+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());
+}
+
+QGeocodingManagerEngineOsm::QGeocodingManagerEngineOsm(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();
+}
+
+QGeocodingManagerEngineOsm::~QGeocodingManagerEngineOsm()
+{
+}
+
+QGeocodeReply *QGeocodingManagerEngineOsm::geocode(const QGeoAddress &address, const QGeoShape &bounds)
+{
+ return geocode(address, -1, -1, bounds);
+}
+
+QGeocodeReply *QGeocodingManagerEngineOsm::geocode(const QGeoAddress &address, int limit, int offset, const QGeoShape &bounds)
+{
+ Q_UNUSED(offset)
+
+ QNetworkRequest request;
+ request.setRawHeader("User-Agent", m_userAgent);
+
+ QUrl url(QStringLiteral("http://nominatim.openstreetmap.org/search"));
+ QUrlQuery query;
+ query.addQueryItem(QStringLiteral("q"), addressToQuery(address));
+ query.addQueryItem(QStringLiteral("format"), QStringLiteral("json"));
+ query.addQueryItem(QStringLiteral("accept-language"), locale().name().left(2));
+ //query.addQueryItem(QStringLiteral("countrycodes"), QStringLiteral("au,jp"));
+ if (bounds.type() == QGeoShape::RectangleType) {
+ query.addQueryItem(QStringLiteral("viewbox"), boundingBoxToLtrb(bounds));
+ query.addQueryItem(QStringLiteral("bounded"), QStringLiteral("1"));
+ }
+ query.addQueryItem(QStringLiteral("polygon"), QStringLiteral("1"));
+ query.addQueryItem(QStringLiteral("addressdetails"), QStringLiteral("1"));
+ if (limit != -1)
+ query.addQueryItem(QStringLiteral("limit"), QString::number(limit));
+
+ url.setQuery(query);
+ request.setUrl(url);
+
+ QNetworkReply *reply = m_networkManager->get(request);
+
+ QGeocodeReplyOsm *geocodeReply = new QGeocodeReplyOsm(reply, this);
+
+ connect(geocodeReply, SIGNAL(finished()), this, SLOT(replyFinished()));
+ connect(geocodeReply, SIGNAL(error(QGeocodeReply::Error,QString)),
+ this, SLOT(replyError(QGeocodeReply::Error,QString)));
+
+ return geocodeReply;
+}
+
+QGeocodeReply *QGeocodingManagerEngineOsm::reverseGeocode(const QGeoCoordinate &coordinate,
+ const QGeoShape &bounds)
+{
+ Q_UNUSED(bounds)
+
+ QNetworkRequest request;
+ request.setRawHeader("User-Agent", m_userAgent);
+
+ QUrl url(QStringLiteral("http://nominatim.openstreetmap.org/reverse"));
+ QUrlQuery query;
+ query.addQueryItem(QStringLiteral("format"), QStringLiteral("json"));
+ query.addQueryItem(QStringLiteral("accept-language"), locale().name().left(2));
+ query.addQueryItem(QStringLiteral("lat"), QString::number(coordinate.latitude()));
+ query.addQueryItem(QStringLiteral("lon"), QString::number(coordinate.longitude()));
+ query.addQueryItem(QStringLiteral("zoom"), QStringLiteral("18"));
+ query.addQueryItem(QStringLiteral("addressdetails"), QStringLiteral("1"));
+
+ url.setQuery(query);
+ request.setUrl(url);
+
+ QNetworkReply *reply = m_networkManager->get(request);
+
+ QGeocodeReplyOsm *geocodeReply = new QGeocodeReplyOsm(reply, this);
+
+ connect(geocodeReply, SIGNAL(finished()), this, SLOT(replyFinished()));
+ connect(geocodeReply, SIGNAL(error(QGeocodeReply::Error,QString)),
+ this, SLOT(replyError(QGeocodeReply::Error,QString)));
+
+ return geocodeReply;
+}
+
+void QGeocodingManagerEngineOsm::replyFinished()
+{
+ QGeocodeReply *reply = qobject_cast<QGeocodeReply *>(sender());
+ if (reply)
+ emit finished(reply);
+}
+
+void QGeocodingManagerEngineOsm::replyError(QGeocodeReply::Error errorCode, const QString &errorString)
+{
+ QGeocodeReply *reply = qobject_cast<QGeocodeReply *>(sender());
+ if (reply)
+ emit error(reply, errorCode, errorString);
+}
+
+QT_END_NAMESPACE
diff --git a/src/plugins/geoservices/osm/qgeocodingmanagerengineosm.h b/src/plugins/geoservices/osm/qgeocodingmanagerengineosm.h
new file mode 100644
index 00000000..0794cced
--- /dev/null
+++ b/src/plugins/geoservices/osm/qgeocodingmanagerengineosm.h
@@ -0,0 +1,78 @@
+/****************************************************************************
+**
+** 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$
+**
+****************************************************************************/
+
+#ifndef QGEOCODINGMANAGERENGINEOSM_H
+#define QGEOCODINGMANAGERENGINEOSM_H
+
+#include <QtLocation/QGeoServiceProvider>
+#include <QtLocation/QGeocodingManagerEngine>
+#include <QtLocation/QGeocodeReply>
+
+QT_BEGIN_NAMESPACE
+
+class QNetworkAccessManager;
+
+class QGeocodingManagerEngineOsm : public QGeocodingManagerEngine
+{
+ Q_OBJECT
+
+public:
+ QGeocodingManagerEngineOsm(const QVariantMap &parameters, QGeoServiceProvider::Error *error,
+ QString *errorString);
+ ~QGeocodingManagerEngineOsm();
+
+ QGeocodeReply *geocode(const QGeoAddress &address, const QGeoShape &bounds);
+ QGeocodeReply *geocode(const QGeoAddress &address, int limit, int offset,
+ const QGeoShape &bounds);
+ QGeocodeReply *reverseGeocode(const QGeoCoordinate &coordinate, const QGeoShape &bounds);
+
+private Q_SLOTS:
+ void replyFinished();
+ void replyError(QGeocodeReply::Error errorCode, const QString &errorString);
+
+private:
+ QNetworkAccessManager *m_networkManager;
+ QByteArray m_userAgent;
+};
+
+QT_END_NAMESPACE
+
+#endif // QGEOCODINGMANAGERENGINEOSM_H
diff --git a/src/plugins/geoservices/osm/qgeoserviceproviderpluginosm.cpp b/src/plugins/geoservices/osm/qgeoserviceproviderpluginosm.cpp
index 3ee87bb8..e3087c40 100644
--- a/src/plugins/geoservices/osm/qgeoserviceproviderpluginosm.cpp
+++ b/src/plugins/geoservices/osm/qgeoserviceproviderpluginosm.cpp
@@ -41,6 +41,7 @@
#include "qgeoserviceproviderpluginosm.h"
#include "qgeotiledmappingmanagerengineosm.h"
+#include "qgeocodingmanagerengineosm.h"
#include <QtLocation/private/qgeotiledmappingmanagerengine_p.h>
@@ -49,11 +50,7 @@ QT_BEGIN_NAMESPACE
QGeocodingManagerEngine *QGeoServiceProviderFactoryOsm::createGeocodingManagerEngine(
const QVariantMap &parameters, QGeoServiceProvider::Error *error, QString *errorString) const
{
- Q_UNUSED(parameters)
- Q_UNUSED(error)
- Q_UNUSED(errorString)
-
- return 0;
+ return new QGeocodingManagerEngineOsm(parameters, error, errorString);
}
QGeoMappingManagerEngine *QGeoServiceProviderFactoryOsm::createMappingManagerEngine(