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

如何通过Google API批量计算多组起点-终点间的距离

当然可以一次性批量处理多组起点-终点配对!

完全不用再循环逐个调用API——Google Maps Platform提供了两种高效的方案,能帮你一次性搞定o1-d1、o2-d2这类配对的距离计算需求:

1. 用Distance Matrix API直接处理配对请求

这是最省心的方案,因为Distance Matrix API本身就支持批量传入起点和终点,还能精准对应你的1:1配对需求。

具体怎么做:

  • 把所有起点用竖线|拼接起来,传给origins参数;
  • 把对应的所有终点也用竖线|拼接,传给destinations参数;
  • API返回的结果是一个矩阵,你只需要取对角线位置的元素(也就是第i个起点到第i个终点的数据),就是每组配对的结果。

举个简化的请求示例:

https://maps.googleapis.com/maps/api/distancematrix/json?
origins=New+York|Los+Angeles|Chicago
&destinations=Boston|San+Francisco|Detroit
&key=YOUR_API_KEY

这个请求会返回3×3的结果矩阵,其中rows[0].elements[0]对应纽约到波士顿的距离,rows[1].elements[1]对应洛杉矶到旧金山的距离,刚好和你的配对顺序一一对应。

要注意的点:

  • 单个请求里的起点+终点总数不能超过API的配额限制(一般单次请求最多支持100个元素,也就是1:1配对的话最多50组,具体配额看你的API密钥设置);
  • 一定要保证起点和终点的顺序严格对应,不然会拿到错误的配对结果。

2. 用Batch Requests打包多个独立请求

如果你的配对数量超过了单个Distance Matrix请求的上限,或者你需要对每个配对请求做更细致的控制,可以用Google的Batch Requests功能,把多个单独的API请求打包成一个HTTP请求发送。

核心步骤:

  • 把每个单组配对的Distance Matrix请求作为一个“批次条目”;
  • multipart/form-data格式把这些条目打包,发送到https://maps.googleapis.com/maps/api/batch
  • 响应会返回每个条目的单独结果,你可以逐个解析获取每组配对的数据。

这种方式能突破单个请求的元素限制,还能保留每个请求的独立性,但处理请求和响应的逻辑会稍微复杂一点。

额外小贴士

  • 不管用哪种方式,都要提前确认你的API密钥的配额和计费规则,批量请求会一次性消耗对应的配额;
  • 如果是超大规模的配对(比如上千组),建议分批次发送请求,避免触发API的速率限制。

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

火山引擎 最新活动