19 QGeoServiceProvider::Error *error,
20 QString *errorString) :
21 QGeoRoutingManagerEngine(parameters), m_networkManager(
new QNetworkAccessManager(
this))
23 if (parameters.contains(kParamUserAgent))
24 m_userAgent = parameters.value(kParamUserAgent).toString().toLatin1();
26 m_userAgent = QByteArrayLiteral(
"Qt Location based application");
28 m_token = parameters.value(kParamToken).toString();
30 *error = QGeoServiceProvider::NoError;
43 QNetworkRequest networkRequest;
44 networkRequest.setHeader(QNetworkRequest::UserAgentHeader, m_userAgent);
50 for (
const QGeoCoordinate &coordinate : request.waypoints()) {
54 stops += QString::number(coordinate.longitude()) + QLatin1Char(
',') +
55 QString::number(coordinate.latitude());
58 query.addQueryItem(QStringLiteral(
"stops"), stops);
59 query.addQueryItem(QStringLiteral(
"f"), QStringLiteral(
"json"));
60 query.addQueryItem(QStringLiteral(
"directionsLanguage"), preferedDirectionLangage());
61 query.addQueryItem(QStringLiteral(
"directionsLengthUnits"), preferedDirectionsLengthUnits());
62 query.addQueryItem(QStringLiteral(
"token"), m_token);
65 networkRequest.setUrl(url);
67 QNetworkReply *reply = m_networkManager->get(networkRequest);
68 GeoRouteReplyEsri *routeReply =
new GeoRouteReplyEsri(reply, request,
this);
70 connect(routeReply, &GeoRouteReplyEsri::finished,
71 this, &GeoRoutingManagerEngineEsri::replyFinished);
72 connect(routeReply, &GeoRouteReplyEsri::errorOccurred,
73 this, &GeoRoutingManagerEngineEsri::replyError);