diff options
author | Paolo Angelelli <paolo.angelelli@qt.io> | 2017-11-30 17:45:35 +0100 |
---|---|---|
committer | Paolo Angelelli <paolo.angelelli@qt.io> | 2017-12-05 10:15:10 +0000 |
commit | 9a901aa63b73d2c6b17ca9dd1c1a1823b160cc7d (patch) | |
tree | 0b14f22a3ba6da18a83ddd0d0f5208abc403e1da /src/plugins | |
parent | fb19292ad9a2379bb9ade484907052fbdc758428 (diff) | |
download | qtlocation-9a901aa63b73d2c6b17ca9dd1c1a1823b160cc7d.tar.gz |
Support waypoints bearing in the HERE backend
Change-Id: I9246b648da809672510460273c2cc21aa478c550
Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/geoservices/nokia/qgeoroutingmanagerengine_nokia.cpp | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/src/plugins/geoservices/nokia/qgeoroutingmanagerengine_nokia.cpp b/src/plugins/geoservices/nokia/qgeoroutingmanagerengine_nokia.cpp index d7e4cf8d..1ae01636 100644 --- a/src/plugins/geoservices/nokia/qgeoroutingmanagerengine_nokia.cpp +++ b/src/plugins/geoservices/nokia/qgeoroutingmanagerengine_nokia.cpp @@ -233,17 +233,28 @@ QStringList QGeoRoutingManagerEngineNokia::calculateRouteRequestString(const QGe baseRequest += m_token; } - int numWaypoints = request.waypoints().size(); + const QList<QVariantMap> metadata = request.waypointsMetadata(); + const QList<QGeoCoordinate> waypoints = request.waypoints(); + int numWaypoints = waypoints.size(); if (numWaypoints < 2) return QStringList(); - + // Details: https://developer.here.com/documentation/routing/topics/resource-param-type-waypoint.html for (int i = 0;i < numWaypoints;++i) { + const QGeoCoordinate &c = waypoints.at(i); baseRequest += QStringLiteral("&waypoint"); baseRequest += QString::number(i); baseRequest += QStringLiteral("=geo!"); - baseRequest += trimDouble(request.waypoints().at(i).latitude()); + baseRequest += trimDouble(c.latitude()); baseRequest += ','; - baseRequest += trimDouble(request.waypoints().at(i).longitude()); + baseRequest += trimDouble(c.longitude()); + baseRequest += QStringLiteral(";;"); // ;<TransitRadius>;<UserLabel> + if (metadata.size() > i) { + const QVariantMap &meta = metadata.at(i); + if (meta.contains(QStringLiteral("bearing"))) { + qreal bearing = meta.value(QStringLiteral("bearing")).toDouble(); + baseRequest += ';' + QString::number(int(bearing)); + } + } } QGeoRouteRequest::RouteOptimizations optimization = request.routeOptimization(); |