更快地计算到许多点的行驶距离

Faster way to calculate driving distance to many points

我正在尝试计算从一个起点到许多不同终点的行驶距离(我需要找到最近的 driver)。 我使用 PHP 并且我基本上 运行 这个函数很多次:

file_get_contents('https://maps.googleapis.com/maps/api/distancematrix/json?origins=' . $latitude . ',' . $longitude . '&destinations=' . $latitude1 . ',' . $longitude1 . '&mode=car&language=da-DK&key=My_API&alternatives=false&sensor=false');

我需要纬度、经度的距离,在某些情况下还需要 40 多个不同的潜在目的地。 我的问题是,计算一次调用的许多点需要永远。找到从一个起点到 37 个不同的潜在终点的距离需要 51-56 秒。

有没有更快的方法?或服务?

祝大家有个愉快的一天。

此致

好吧,IMO 你有 3 种可能性:

1) 坚持使用 php 并使用 pthreads,您可以在每个线程处理一个请求并减少脚本运行的时间。看看this

2) 转到 "async" 并为每个驱动程序使用一个 http 请求,因此首先获取驱动程序列表,然后为每个驱动程序发送一个请求。这将涉及有一个前端能够执行javascript(浏览器)

3) 为此使用另一种技术,即非阻塞,如nodejs。使用承诺,您可以轻松做到这一点:

let urls = ["url1", "url2", "url3"];

asnyc doRequest(url) {
    // return promise...
}

Promise.all(urls.map(doRequest)).then(data => {
    console.log(data);
});

!

我确实从 nodejs 开始,它也做到了。但是我设法找到了一种更聪明的方法。 更深入的阅读后,google其实你可以为你做。

可以输入一个起点和多个终点。 起源=lat,lng&destinations=lat1,lng1|lat2,lng2|...latn,lngn&

只需使用 |划分目的地。

我从 51 秒变成了 2 秒。