更快地计算到许多点的行驶距离
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 秒。
我正在尝试计算从一个起点到许多不同终点的行驶距离(我需要找到最近的 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 秒。