带停靠点的路线
使用 Chargetrip Route API 计算 EV 路线时,您可以使用 via 在起点和终点之间添加中间停靠点。
停靠点可让您针对真实出行场景自定义路线规划,例如在偏好的充电站充电、接送乘客或在餐厅停留。
停靠点类型
Chargetrip 支持两种类型的中间停靠点:
| 停靠点 | 是否充电 | 输入字段 | 用途 |
|---|---|---|---|
| 地点 | 否 | via.geometry | 地理位置停靠点(接人、送货、风景绕行、咖啡休息)。 |
| 充电站 | 是 | via.properties.station.station_id | 明确选定的充电站。 |
停靠时长
您可以为每个停靠点配置时长。根据停靠点类型(充电或非充电)的不同,stop_duration 的配置位置不同,行为也不同:
1. 非充电停靠点
停靠时长配置在 input.via.properties.location.stop_duration。该时长表示确切的停靠时长,会直接计入总行程时间,不影响车辆的充电或行驶时间。
2. 充电停靠点
停靠时长配置在 input.via.properties.station.stop_duration。该值表示最短停靠时长。车辆至少会在充电站停留这么长时间,但路线规划器可能会根据所配置的 charge_mode 延长停靠:
-
ALWAYS_TO_MAX_CHARGE:如有需要,延长充电时间以达到所配置的最大 SoC。如果请求的stop_duration超过达到最大 SoC 所需的时间,剩余时间将记为闲置停留。 -
OPTIMIZE_TRAVEL_TIME:仅当延长停留能缩短整体行程时间(例如省去后续的一次充电停靠)时,才会超出stop_duration延长停留。否则,按请求的确切时长充电。如果请求的stop_duration超过达到最大 SoC 所需的时间,剩余时间将记为闲置停留。
如果未提供值,规划器将完全根据路线的 charge_mode 来优化充电时长。
向现有路线添加充电站
一个常见场景是:用户为已有停靠点的路线选择充电站,例如您的界面中显示的备选充电站。无代码方案使用这种方法,将充电站自动添加为 via 停靠点,无需任何重新排序逻辑,让路线无缝更新。
via 数组的顺序就是各停靠点被访问的顺序。追加到末尾的充电站会最后一个被访问,即使它位于靠近路线起点的位置。要将其插入到正确位置,请将充电站的位置与路线上已有的途经点进行比较:
- 按顺序收集途经点。
从要修改的路线的
request_input中获取origin、每个现有的via停靠点以及destination。request_input中的每个途经点都带有geometry,包括仅使用station_id创建的停靠点。 - 绘制一条穿过途经点的线。
按顺序连接各途经点,形成一条线。这条线上两个途经点之间的每一部分是一个线段。
- 找到离充电站最近的线段。
使用地理空间库,找出线上离充电站坐标最近的点。例如 turf.js 提供了
nearestPointOnLine,它还会返回包含该点的线段的索引。该索引就是线段起点所对应的途经点的索引。 - 将充电站插入到该途经点之后。
途经点列表以
origin开头,因此途经点在列表中的索引,对应于将新项插入via后使其紧随该途经点的位置。索引为0表示该充电站作为第一个停靠点插入。 - 切勿插入到终点之后。
当最近的点位于最后一个线段上时,索引可能指向
destination。在此处插入会使充电站排在路线终点之后,因此请改用前一个途经点,使充电站作为destination之前的最后一个停靠点插入。
注意事项
- 这条线用直线段连接各途经点,并不沿路线的实际道路。备选充电站始终位于路线周围 5 至 10 公里的走廊范围内,因此不会偏离太远,最近的线段大多是准确的。对于超出该范围的充电站,其他方案可能更合适。
- 路线的
request_input是权威来源。请基于它构建新请求,并保持vehicle和charging设置等其他所有字段不变。
示例
计算带有 30 分钟非充电停靠的路线。
在该停靠点上添加了 1800 秒(30 分钟)的 stop_duration。这就是停靠时长,因为不可能带来额外收益。
计算带有至少 30 分钟充电停靠的路线。
在该停靠点上添加了 1800 秒(30 分钟)的 stop_duration。这将是最短停靠时长。如果延长充电时间对行程有利,时长将会增加。
计算不设最短停靠时长的充电停靠路线。
在该停靠点上省略了 stop_duration:规划器会根据充电模式计算最优充电时间。
此内容是否有帮助?