summaryrefslogtreecommitdiff
path: root/src/plugins/geoservices
diff options
context:
space:
mode:
authorPaolo Angelelli <paolo.angelelli@qt.io>2017-11-30 17:45:35 +0100
committerPaolo Angelelli <paolo.angelelli@qt.io>2017-12-05 10:15:10 +0000
commit9a901aa63b73d2c6b17ca9dd1c1a1823b160cc7d (patch)
tree0b14f22a3ba6da18a83ddd0d0f5208abc403e1da /src/plugins/geoservices
parentfb19292ad9a2379bb9ade484907052fbdc758428 (diff)
downloadqtlocation-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/geoservices')
-rw-r--r--src/plugins/geoservices/nokia/qgeoroutingmanagerengine_nokia.cpp19
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();