You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Google Directions API返回MAX_ROUTE_LENGTH_EXCEEDED错误的技术咨询

解决Google Directions API步行路线超长报错问题

我来帮你搞定这个问题!首先咱们得先弄明白为什么API报错,但网页版Google Maps却能显示这条步行路线:

问题根源

Google Directions API的步行路线有明确的长度限制(官方文档提到步行路线的最大距离通常在2000公里左右,具体数值可能随调整变化),当请求的路线远超这个限制时,就会返回MAX_ROUTE_LENGTH_EXCEEDED错误。而网页版Google Maps采用了不同的路线生成逻辑,它允许展示超长的“虚拟”步行路线(哪怕现实中根本不可能完成),所以能正常显示。

可行解决方案

针对你的需求,这里有几个实用的方案:

1. 拆分长路线为多个短路段

这是最直接的解决办法:把开普敦到马加丹的超长路线拆分成多个符合API限制的短步行段,依次请求每个路段的路线数据,最后在应用里合并绘制。

  • 操作步骤
    • 先确定沿途的中间节点(比如选取沿途的主要城市,如内罗毕、德黑兰、新西伯利亚等),可以用Google Geocoding API获取这些城市的坐标。
    • 对每一组相邻的起点-中间点、中间点-终点发起Directions API请求,确保每个请求的步行距离在API允许范围内。
    • 把每个请求返回的routes[0].overview_polyline数据提取出来,在你的地图上依次拼接绘制。

2. 确认是否需要纯步行路线

如果你的业务场景允许灵活调整交通方式,可以考虑混合模式路线:比如步行到机场+航班+步行到目的地,用Directions API的transit模式(结合航班数据)或者driving+walking的组合来生成路线。但如果必须纯步行,这个方案就不适用啦。

3. 尝试替换请求参数形式

你当前的请求用了原始坐标作为起点和终点,可以尝试换成地址名称(比如origin=Cape Town, South Africadestination=Magadan, Russia),有时候API对地址的解析可能会有不同的处理逻辑,但这个方法不一定能解决超长路线的问题,不过可以尝试一下。

示例请求(拆分后的路段)

比如先请求开普敦到内罗毕的步行路线:

https://maps.googleapis.com/maps/api/directions/json?mode=WALKING&origin=-33.92514997219349,18.422881477084793&destination=-1.286389,36.817223&key=[你的API密钥]

确认成功返回路线后,再继续请求下一个路段,直到马加丹。

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

火山引擎 最新活动