Search code examples
here-api

Trying to use waypoints with JavaScript API


I'm new with MapHere, I see that with REST API side I can specify waipoints but I can't with JavaScript, I tried some parameters like 'via' but only admit one point:

var routingParameters = {
  'routingMode': 'fast',
  'transportMode': 'car',
  // The start point of the route:
  'origin': '36.8414197,-2.4628135',
  'via': '37.9923795,-1.1305431',
  // The end point of the route:
  'destination': '40.4167047,-3.7035825',
  // Include the route shape in the response
  'return': 'polyline'
};

I saw an example on the main page of javascript web but I can't use waypoints:

var router = platform.getRoutingService(),
  routeRequestParams = {
    mode: 'fastest;car',
    representation: 'display',
    routeattributes: 'waypoints,summary,shape,legs',
    maneuverattributes: 'direction,action',
    waypoint0: '52.5160,13.3779', // Brandenburg Gate
    waypoint1: '52.5206,13.3862'  // Friedrichstraße Railway Station
};

Throwing the following error:

{"title":"Malformed request","status":400,"code":"E605001","cause":"Error while parsing request: 'origin' parameter is required\n","action":"","correlationId":"1c7bd525-b8af-4989-83a9-ab07f26a8c33"}

So, how I can send request for use waypoints?

EDIT

I saw the problem, when the .js create the url encode the second &via=

https://router.hereapi.com/v8/routes?xnlp=CL_JSMv3.1.18.1&apikey=***&routingMode=fast&transportMode=car&origin=50.1120%2C8.6834&destination=52.5309%2C13.3846&via=50.1234%2C8.7654%26via%3D51.2234%2C9.1123&return=polyline

If I decode & and = works perfectly

https://router.hereapi.com/v8/routes?xnlp=CL_JSMv3.1.18.1&apikey=***&routingMode=fast&transportMode=car&origin=50.1120%2C8.6834&destination=52.5309%2C13.3846&via=50.1234%2C8.7654&via=51.2234%2C9.1123&return=polyline

Solution

  • The JavaScript API does not yet (as of library version 3.1.18.1) support passing multiple waypoints, meaning passing an array of points to the via parameter. Your best bet around this lack of support would be to use the Routing REST API directly:

    https://router.hereapi.com/v8/routes?
      origin=52.550464,13.384223
      &transportMode=car
      &destination=52.477545,13.447395
      &via=52.529791,13.401389
      &via=52.513079,13.424392
      &via=52.487581,13.425079
      &apikey={YOUR_API_KEY}