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

使用Google Directions API无法获取TRAIN模式公共交通路线的问题

问题排查与解答

1. 代码调用的核心错误

你代码中transitOptions.modes使用了字符串'TRAIN',但Google Maps JavaScript API要求使用枚举常量google.maps.TransitMode.TRAIN,而非原始字符串。API无法识别字符串形式的参数,会忽略该过滤条件,最终返回默认的公交路线。

修正后的代码片段:

const directionsService = new window.google.maps.DirectionsService();
try {
  const results = await directionsService.route({
    origin: 'Trichy',
    destination: 'Bangalore',
    travelMode: google.maps.TravelMode.TRANSIT, // 确保此处是TRANSIT枚举
    transitOptions: {
      modes: [google.maps.TransitMode.TRAIN], // 使用枚举常量
    },
    provideRouteAlternatives: true,
  });
  
  setDirectionsResponse(results);
  setDistance(results.routes[0].legs[0].distance.text);
  setDuration(results.routes[0].legs[0].duration.text);
} catch (error) {
  console.error('Error fetching directions:', error);
}

同时要确保travelMode变量的值是google.maps.TravelMode.TRANSIT,而非其他模式(如BUS),否则transitOptions参数不会生效。

2. 关于免费版的权限限制

Google Maps Platform目前没有“仅允许获取BUS路线”的免费版限制:

  • 免费额度(每月前1000次Directions API请求)内的功能与付费完全一致,支持获取火车、公交等所有Transit模式的路线。
  • 只要你的API密钥已正确启用Directions API,且请求参数符合规范,就能获取到火车路线。

额外注意事项

  • 确认起点/终点的地理编码准确性:API会将字符串地址转换为地理坐标,若存在歧义可能影响路线结果,可尝试使用经纬度作为origin/destination以排除编码问题。
  • 检查API返回的routes数组:若修正参数后仍无火车路线,可打印完整的results对象,查看API是否返回了错误提示或无匹配路线的说明。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 20:26:01