File indexing completed on 2024-04-28 03:50:34

0001 // SPDX-License-Identifier: LGPL-2.1-or-later
0002 //
0003 // SPDX-FileCopyrightText: 2010 Dennis Nienhüser <nienhueser@kde.org>
0004 //
0005 
0006 
0007 #ifndef MARBLE_OSMNOMINATIMREVERSEGEOCODINGRUNNER_H
0008 #define MARBLE_OSMNOMINATIMREVERSEGEOCODINGRUNNER_H
0009 
0010 #include "ReverseGeocodingRunner.h"
0011 #include "GeoDataCoordinates.h"
0012 
0013 #include <QString>
0014 #include <QNetworkAccessManager>
0015 #include <QNetworkRequest>
0016 
0017 class QNetworkReply;
0018 class QDomNode;
0019 
0020 namespace Marble
0021 {
0022 
0023 class GeoDataExtendedData;
0024 
0025 class OsmNominatimRunner : public ReverseGeocodingRunner
0026 {
0027     Q_OBJECT
0028 public:
0029     explicit OsmNominatimRunner(QObject *parent = nullptr);
0030 
0031     ~OsmNominatimRunner() override;
0032 
0033     // Overriding MarbleAbstractRunner
0034     void reverseGeocoding( const GeoDataCoordinates &coordinates ) override;
0035 
0036 private Q_SLOTS:
0037     // Forward a result to the search or reverse geocoding handler
0038     void handleResult( QNetworkReply* );
0039 
0040     void returnNoReverseGeocodingResult();
0041 
0042     void startReverseGeocoding();
0043 
0044 private:
0045     static void extractChildren(const QDomNode &node, GeoDataPlacemark &placemark);
0046 
0047     QNetworkAccessManager m_manager;
0048 
0049     QNetworkRequest m_request;
0050 
0051     GeoDataCoordinates m_coordinates;
0052 };
0053 
0054 }
0055 
0056 #endif