在此映射javascript API多个航路点

问题描述

我正在使用Here Maps Javascript API。如何以编程方式添加多个航路点?我尝试过:

  var via = new Array();
  var len = waypoints.length-1;
  for(var i = 1; i < waypoints.length-1; i++){
   via.push("waypoint" + i + ":" + waypoints[i][0] + "," + waypoints[i][1] + ",");
   //console.log(waypnts);
  }
  console.log(via);
   var router = platform.getRoutingService(),routeRequestParams = {
  mode: 'fastest;truck;',grossWeight: '40',height: '4.0',width: '2.55',length: '18.25',axleCount: '5',excludecountries: 'CHE',representation: 'display',alternatives: '3',routeattributes : 'waypoints,summary,legs',maneuverattributes: 'direction,action',//RouteRepresentationModeType:'dragNDrop',start:waypoints[0][0] + "," + waypoints[0][1],destination:waypoints[len][0] + "," + waypoints[len][1]
};

我尝试将via变量添加到routeRequestParams,但没有成功。

解决方法

要定义通过点,请在https://developer.here.com/documentation/maps/3.1.19.0/api_reference/H.service.Url.MultiValueQueryParameter.html上描述H.service.Url.MultiValueQueryParameter类,请参见示例代码:

// Assumption: the platform is instantiated
let router = platform.getRoutingService(null,8);
router.calculateRoute({
  'origin': '48.86,2.31','destination': '48.86,2.35',// defines multiple waypoints
  'via': new H.service.Url.MultiValueQueryParameter(['48.8664,2.3234','48.8703,2.3499']),// returns route shape as a polyline in response
  'return': 'polyline','transportMode': 'car'
},(result) => {
  const sections = result.routes[0].sections;
  const lineStrings = [];
  sections.forEach((section) => {
    // convert Flexible Polyline encoded string to geometry
    lineStrings.push(H.geo.LineString.fromFlexiblePolyline(section.polyline));
  });
  const multiLineString = new H.geo.MultiLineString(lineStrings);
  const bounds = multiLineString.getBoundingBox();
  // render route on the map
  map.addObject(new H.map.Polyline(multiLineString,{style: {lineWidth: 5}}));
  // zoom to polyline
  map.getViewModel().setLookAtData({bounds});
},console.error);