You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

获取最长路线距离的Map Function结果不一致问题排查

修复获取最长路线距离的不稳定问题

你的函数结果不稳定的核心原因是:默认情况下谷歌地图Directions API仅返回1条最优(通常是最短)路线,只有当你主动要求返回备选路线时,directions.routes数组才会包含多条路线。如果数组里只有1条路线,你的排序操作根本起不到筛选最长路线的作用,自然会返回这条唯一的路线(可能是最短的)。

具体修复方案:

  • 启用备选路线获取:调用setAlternatives(true)方法,告知API返回多条可能的路线
  • 完善边界处理:增加对无路线、路线无legs的异常情况处理,避免运行报错
  • 简化排序逻辑:用更直观的数值差实现降序排序

修复后的完整代码:

function getDistance(a, b) {
  var mapObj = Maps.newDirectionFinder();
  mapObj.setOrigin(a);
  mapObj.setDestination(b);
  // 关键:开启备选路线,让API返回多条路线供筛选
  mapObj.setAlternatives(true);
  var directions = mapObj.getDirections();

  // 处理无路线返回的异常情况
  if (!directions.routes || directions.routes.length === 0) {
    return 0; // 可根据需求改为抛出错误或返回其他默认值
  }

  // 按路线距离降序排序,取第一条即为最长路线
  var longestRoute = directions.routes.sort((routeA, routeB) => {
    const distanceA = routeA.legs?.[0]?.distance?.value || 0;
    const distanceB = routeB.legs?.[0]?.distance?.value || 0;
    return distanceB - distanceA;
  })[0];

  return longestRoute.legs[0].distance.value;
}

额外说明:

即使开启了备选路线,API也可能因道路条件、交通规则等因素返回的路线数量有限,但至少能保证当存在多条可行路线时,你能筛选出最长的那条,解决结果不稳定的问题。

内容的提问来源于stack exchange,提问作者Borgher

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 03:35:19