HERE Maps Fleet API调用报错不返回路线,如何获取可用备选路线?
报错信息:Couldn't reach way point 1 (start links.......issues: illegal access, height)
该报错是因为HERE Maps Fleet API默认开启了严格车辆限制匹配规则,当传入的车辆高度参数超过所有可达路径的限高值时,会直接抛出错误而非自动绕行,旧版API默认限制宽松度更高所以不会触发该问题。你可以按以下步骤调整配置:
调整步骤
- 新增自动绕行限制规则
在mode参数中追加avoidRestrictions:height配置,告知API遇到高度限制时自动查找可通行的绕行路线,而不是直接返回错误。修改后的代码如下:
- 新增自动绕行限制规则
mode = 'fastest;'+varRoute.vehicle_type+';avoidRestrictions:height;',
如果需要同时适配宽度、重量、长度等其他车辆参数的限制绕行,可以一并追加对应规则:
mode = 'fastest;'+varRoute.vehicle_type+';avoidRestrictions:height,avoidRestrictions:width,avoidRestrictions:weight,avoidRestrictions:length;',
- 调整备选路线数量配置
你当前的alternatives参数值为0,API只会尝试计算1条最优路线,只要该路线超限就会直接报错。建议将参数值调整为2~3,让API返回多个可选路线,降低报错概率:
- 调整备选路线数量配置
// 把alternatives=0修改为alternatives=2 url = `https://${api}?apiKey=${apiKey}&currency=${currency}&height=${height}&width=${width}&alternatives=2&total_weight=${total_weight}&total_length=${total_length}&routeAttributes=${routeattributes}&mode=${mode}&representation=${representation}&tollVehicleType=${tollVehicleType}&rollups=${rollups}&waypoint0=${waypoint0};`;
- 新增车辆参数合法性校验
部分场景下报错是因为传入的车辆参数异常,比如varRoute.height为空、单位换算错误导致高度值超出合理范围,建议增加参数校验逻辑,参数异常时自动使用对应车型的默认值:
- 新增车辆参数合法性校验
if(varRoute.vehicle_type=='car'){ toll_height=1.5+'m'; toll_width=1.5+'m'; }else{ // 卡车参数校验 let rawHeight = varRoute.height / 1000; // 高度不在1m~4.5m合理区间时,使用默认值4m toll_height = (rawHeight > 1 && rawHeight < 4.5) ? rawHeight + 'm' : '4m'; let rawWidth = varRoute.width / 1000; // 宽度不在1m~3m合理区间时,使用默认值2.5m toll_width = (rawWidth > 1 && rawWidth < 3) ? rawWidth + 'm' : '2.5m'; }
- 新增错误降级逻辑
在请求的错误回调中添加降级处理,原参数请求失败时,临时去掉车辆尺寸、重量等限制参数重新发起请求,保证至少能拿到基础路线结果,再单独匹配过路费成本。
- 新增错误降级逻辑
内容的提问来源于stack exchange,提问作者Pavire18
相关产品推荐
相关产品推荐

