routingParams.departure对calculateIsoline无效

时间:2019-01-18 22:51:49

标签: javascript here-api

我正在使用H.platform.routingService()。calculateIsoline方法,并期望routeParams.departure属性会对结果产生影响。 但是,更改日期和/或时间对计算的等值线没有影响。

在下面的代码中,startLocs是包含lat和lng的地理编码对象的数组

let queryDateString = queryDate.format('YYYY-MM-DDTHH:mm:ss');

startLocs.forEach(loc => {
      var routingParams = {
        mode: 'fastest;car;',
        start: `geo!${loc.geocode.lat},${loc.geocode.lng}`,
        range: 600,
        rangetype: 'time',
        departure: queryDateString
      };

      // Define a callback function to process the isoline response.
      var onResult = result => {
        var center = new H.geo.Point(
            result.response.center.latitude,
            result.response.center.longitude
          ),
          isolineCoords = result.response.isoline[0].component[0].shape,
          linestring = new H.geo.LineString(),
          isolinePolygon,
          isolineCenter;

        // Add the returned isoline coordinates to a linestring:
        isolineCoords.forEach(function(coords) {
          linestring.pushLatLngAlt.apply(linestring, coords.split(','));
        });

        // Create a polygon and a marker representing the isoline:
        isolinePolygon = new H.map.Polygon(linestring);
        isolineCenter = new H.map.Marker(center);

        // Add the polygon and marker to the map:
        this.markerGroup.addObject(isolineCenter);
        this.polylineGroup.addObject(isolinePolygon);            
      };

      // Get an instance of the routing service:
      var router = this.platform.getRoutingService();

      // Call the Routing API to calculate an isoline:
      router.calculateIsoline(routingParams, onResult, function(error) {
        console.log(error)
      });
    });
    this.isLoading = false;
  } catch (err) {
    console.log('failed processing isochrones', err);
  }

在此示例中,无论queryDateString的值如何,结果都是相同的。

文档指出ReST APIs查询参数映射到routeParams中的属性,因此我希望Deriving属性应该起作用。有人知道不是吗?

编辑: 更新以包含工作示例,以防万一有人偶然发现此问题:

let queryDateString = queryDate.format('YYYY-MM-DDTHH:mm:ss');
let onResult = result => {

      let center = new H.geo.Point(
        result.response.center.latitude,
        result.response.center.longitude
      )

      let isolineCoords = result.response.isoline[0].component[0].shape;
      let linestring = new H.geo.LineString();
      let isolinePolygon;
      let isolineCenter;

      // Add the returned isoline coordinates to a linestring:
      isolineCoords.forEach(function(coords) {
        linestring.pushLatLngAlt.apply(linestring, coords.split(','));
      });

      // Create a polygon and a marker representing the isoline:
      isolinePolygon = new H.map.Polygon(linestring);
      isolineCenter = new H.map.Marker(center);
      //let isolineObj = [isolineCenter, isolinePolygon];
      // Add the polygon and marker to the map:
      this.markerGroup.addObject(isolineCenter);
      this.polylineGroup.addObject(isolinePolygon);
    };

    let router = this.platform.getRoutingService();

    startLocs.forEach(loc => {

      let routingParams = {
        mode: 'fastest;car;traffic:enabled',
        start: `geo!${loc.geocode.lat},${loc.geocode.lng}`,
        range: this.maxTime * 60,
        rangetype: 'time',
        departure: queryDateString
      };
      // Call the Routing API to calculate an isoline:
      router.calculateIsoline(routingParams, onResult, function(error) {
        alert(error.message);            
      });
    });        
  }
  catch (err) {
    console.log('failed processing isochrones', err);
  }
  finally{
    this.isLoading = false;
  }

1 个答案:

答案 0 :(得分:1)

该模式缺少交通部分。请尝试添加此'&mode = fastest; car; traffic:enabled'。然后,您还会收到例如发送其他形状的消息,例如上午10:00。

这里有一些扩展的可视化等值线示例:

https://tcs.ext.here.com/examples/v3/isoline_routing

这可能对您也很有趣。