FindSequence API多before约束配置未生效问题求助
问题根因与修正方案
你确实存在before约束的配置规则使用错误,核心问题是约束值的写法不符合API要求。
约束规则要求
FindSequence API的before约束有明确的格式要求:
- 冒号后必须填写目标途经点在请求中定义的唯一ID,也就是配置中形如
Stop-xxxx的标识值 - 不可使用你在请求URL中自定义的参数别名(也就是你写的
destination1/destination2这类仅用于拼接参数的键名,API不会建立别名和途经点ID的映射关系)
当前配置的问题
你给destination1(对应途经点ID为Stop-20712)、destination2(对应途经点ID为Stop-20714)配置的约束为before:destination3、before:destination4,但destination3、destination4只是你自己设置的URL参数名,并非途经点的真实ID:
- 实际对应
destination3的途经点ID是Stop-20710 - 实际对应
destination4的途经点ID是Stop-20711
API解析时无法识别这两个自定义别名对应的目标点,因此相关before约束会被直接丢弃,不参与排序计算。这也和你返回结果的现象完全匹配:Stop-20714(destination2)的fulfilledConstraints中仅列了st:7200和before:destination4,原本要求排在Stop-20710前面的约束完全没有被识别,API自然会按照路线成本最优的逻辑,把距离出发点更近的Stop-20710排在更靠前的位置。
正确配置示例
将约束中的目标值替换为对应途经点的真实ID即可:
&destination1=Stop-20712;-33.878683,151.1377808;st:7200;before:Stop-20710;before:Stop-20711 &destination2=Stop-20714;-33.8021024,150.9552574;st:7200;before:Stop-20710;before:Stop-20711 &destination3=Stop-20710;-33.9486425,151.080674;st:7200 &destination4=Stop-20711;-33.8929182,151.0596753;st:7200
校验注意事项
配置完成后,可以通过接口返回的fulfilledConstraints字段校验约束是否实际生效:只有出现在该字段中的约束,才是被API识别并应用到排序逻辑中的规则,未出现在字段内的配置默认是未生效的。
内容的提问来源于stack exchange,提问作者RyanEK
相关产品推荐
相关产品推荐

