我知道如何使用
来获取两个位置之间的距离 var distance = require("google-distance-matrix");
distance.key('API-KEY');
distance.mode('driving');
distance.units('imperial');
var origins = [platlong.toString()];
var destinations = [dlatlong.toString()];
distance.matrix(origins, destinations, function(err,Data){
console.log(Data.rows[0].elements[0].distance.value);
}};
但是如何获取3个或更多位置的成本距离矩阵
[
[0, 2, 3],
[2, 0, 4],
[3, 4, 0]
]
要使用VRP算法,我需要如上的成本距离矩阵。
我知道创建成本距离矩阵的唯一方法是循环m x n次,即3个位置3 x 3 = 9次。
在15个位置的实时场景中,我必须循环15 x 15 = 225次
所以我需要提供225次API密钥,这将非常昂贵。
有什么方法可以廉价地找到成本距离矩阵,而不是通过谷歌距离矩阵循环m x n次
答案 0 :(得分:0)
您可以在此假设下减少查找,因为A-> B的距离与B-> A相同,而不进行A-> A循环查找。这意味着对于15个位置,您可以摆脱15 * 14/2 =105。这仍然很多,但比以前少一半。
答案 1 :(得分:0)
托管您自己的路由引擎,我经常使用https://github.com/Project-OSRM/osrm-backend
仅当不需要实时数据时,此选项才有用。