7#include <QtLocation/private/qgeorouteparser_p.h>
8#include <QtLocation/private/qgeoroute_p.h>
9#include <QtCore/QJsonDocument>
10#include <QtCore/QJsonObject>
11#include <QtCore/QJsonArray>
12#include <QtLocation/QGeoRouteSegment>
13#include <QtLocation/QGeoManeuver>
19: QGeoRouteReply(request, parent)
22 setError(UnknownError, QStringLiteral(
"Null reply"));
25 connect(reply, &QNetworkReply::finished,
26 this, &QGeoRouteReplyMapbox::networkReplyFinished);
27 connect(reply, &QNetworkReply::errorOccurred,
28 this, &QGeoRouteReplyMapbox::networkReplyError);
29 connect(
this, &QGeoRouteReply::aborted, reply, &QNetworkReply::abort);
30 connect(
this, &QObject::destroyed, reply, &QObject::deleteLater);
33QGeoRouteReplyMapbox::~QGeoRouteReplyMapbox()
37void QGeoRouteReplyMapbox::networkReplyFinished()
39 QNetworkReply *reply =
static_cast<QNetworkReply *>(sender());
42 if (reply->error() != QNetworkReply::NoError)
48 QList<QGeoRoute> routes;
51 QByteArray routeReply = reply->readAll();
52 QGeoRouteReply::Error error = parser->parseReply(routes, errorString, routeReply);
54 for (QGeoRoute &route : routes) {
55 route.setRequest(request());
56 for (QGeoRoute &leg: route.routeLegs()) {
57 leg.setRequest(request());
62 metadata[
"osrm.reply-json"] = routeReply;
65 extAttr[
"engine"] =
"mapbox";
66 extAttr[
"metadata"] = metadata;
68 QList<QGeoRoute> mapboxRoutes;
69 for (
const QGeoRoute &route : routes.mid(0, request().numberAlternativeRoutes() + 1)) {
70 QGeoRoute mapboxRoute(route);
71 mapboxRoute.setExtendedAttributes(extAttr);
72 mapboxRoutes.append(mapboxRoute);
75 if (error == QGeoRouteReply::NoError) {
76 setRoutes(mapboxRoutes);
80 setError(error, errorString);
84void QGeoRouteReplyMapbox::networkReplyError(QNetworkReply::NetworkError error)
87 QNetworkReply *reply =
static_cast<QNetworkReply *>(sender());
89 setError(QGeoRouteReply::CommunicationError, reply->errorString());
const QGeoRouteParser * routeParser() const
The QNetworkReply class contains the data and headers for a request sent with QNetworkAccessManager.