基于Google Maps Distance Matrix API构建填充距离矩阵的最优方案及请求限制问询
关于使用Google Distance Matrix API构建行程时间矩阵的问题解答
一、请求格式的可行性
你提出的URL请求格式完全可行!只要把Location 1这类占位符替换成实际地址或经纬度(比如40.712776,-74.005974),并填入有效的API密钥,就能获取包含行程时间的JSON响应。
拿到返回的JSON后,你可以解析其中的rows和elements字段,提取每个起点-终点对的行程时间(注意区分duration和duration_in_traffic,当指定traffic_model时,后者是带交通预测的时间),再将数据填充到空矩阵表格中,这个思路完全没问题。
二、单次请求的数量限制
这是核心问题,Google Distance Matrix API对单次请求的起点×终点总组合数有明确限制:
- 免费版(未启用结算的API密钥):单次请求总元素数(起点数×终点数)≤100
- 付费版(已启用结算的API密钥):单次请求总元素数≤625(比如25个起点×25个终点)
举个例子:如果你的起点和终点都是60个,总组合数是60×60=3600,远远超过两类版本的单次上限,所以直接用你给出的URL格式一次性请求60+起点和终点是不合规的,会触发API错误返回。
三、处理60+地点的解决方案
如果需要覆盖60+个地点的全量矩阵,你需要拆分请求:
- 把起点和终点分成多个批次,比如付费版每次请求20个起点×20个终点(总400个元素),免费版每次请求10个×10个(总100个元素)
- 控制请求频率,避免触发QPS限制:免费版通常限制每秒10个请求,付费版可根据配额调整,但需遵循官方速率规则
- 将各批次的响应数据合并,最终构建完整的行程时间矩阵
补充小提示
- 优先使用经纬度作为
origins和destinations的参数值,比纯地址更准确,还能减少API解析误差 - 当指定
traffic_model=optimistic时,记得提取响应里的duration_in_traffic字段,而非默认的无交通理想时间duration
内容的提问来源于stack exchange,提问作者gh0st
相关产品推荐
相关产品推荐

