Mapbox Static Image API部分Strava折线生成失败,提示未授权
问题排查与解决方案
核心原因:请求URL长度超限
Mapbox Static API对GET请求的URL总长度有严格限制(通常为8192字符)。你提供的失败折线比成功折线长2倍以上,拼接后的完整URL大概率超过了长度阈值,服务器因此返回误判的"Not Authorized"错误。
解决方法
方法1:改用POST请求(推荐)
Mapbox支持通过POST请求提交静态地图参数,彻底规避URL长度限制:
- 发送POST请求到地址:
https://api.mapbox.com/styles/v1/mapbox/streets-v12/static?access_token=你的令牌 - 请求体使用JSON格式,示例如下:
{ "width": 1000, "height": 1000, "overlay": "path-5+f44-0.5(你的完整polyline)", "position": "auto" }
方法2:简化Polyline
如果必须使用GET请求,可对Strava返回的Polyline进行抽点简化:
- 使用Douglas-Peucker算法减少坐标点数量(如Turf.js的
turf.simplify方法) - 确保简化后的Polyline长度足够短,使整个URL总长度控制在8192字符以内
方法3:URL编码Polyline
对Polyline中的特殊字符(如\、?)进行URL编码后再拼接进URL,避免参数解析错误:
- 示例:将
\转译为%5C,?转译为%3F
内容的提问来源于stack exchange,提问作者Atul Sharma
相关产品推荐
相关产品推荐

