File indexing completed on 2024-04-28 03:50:35
0001 // SPDX-License-Identifier: LGPL-2.1-or-later 0002 // 0003 // SPDX-FileCopyrightText: 2012 Dennis Nienhüser <nienhueser@kde.org> 0004 // 0005 0006 0007 #ifndef MARBLE_OSMOSRMRUNNER_H 0008 #define MARBLE_OSMOSRMRUNNER_H 0009 0010 #include "RoutingRunner.h" 0011 #include "GeoDataCoordinates.h" 0012 #include "routing/instructions/RoutingInstruction.h" 0013 0014 #include <QString> 0015 #include <QNetworkAccessManager> 0016 #include <QNetworkReply> 0017 0018 namespace Marble 0019 { 0020 0021 class GeoDataLineString; 0022 0023 class OSRMRunner : public RoutingRunner 0024 { 0025 Q_OBJECT 0026 0027 public: 0028 explicit OSRMRunner(QObject *parent = nullptr); 0029 0030 ~OSRMRunner() override; 0031 0032 // Overriding MarbleAbstractRunner 0033 void retrieveRoute( const RouteRequest *request ) override; 0034 0035 private Q_SLOTS: 0036 /** Route data was retrieved via http */ 0037 void retrieveData( QNetworkReply *reply ); 0038 0039 /** A network error occurred */ 0040 void handleError( QNetworkReply::NetworkError ); 0041 0042 void get(); 0043 0044 private: 0045 static void append( QString* input, const QString &key, const QString &value ); 0046 0047 static GeoDataLineString* decodePolyline( const QString &geometry ); 0048 0049 static RoutingInstruction::TurnType parseTurnType( const QString &instruction ); 0050 0051 GeoDataDocument* parse( const QByteArray &input ) const; 0052 0053 QNetworkAccessManager m_networkAccessManager; 0054 0055 QNetworkRequest m_request; 0056 }; 0057 0058 } 0059 0060 #endif