如何使用google-distance-matrix创建成本距离矩阵?

时间:2019-01-17 05:26:30

标签: javascript node.js matrix google-api google-distancematrix-api

我知道如何使用

来获取两个位置之间的距离
 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次

2 个答案:

答案 0 :(得分:0)

您可以在此假设下减少查找,因为A-> B的距离与B-> A相同,而不进行A-> A循环查找。这意味着对于15个位置,您可以摆脱15 * 14/2 =105。这仍然很多,但比以前少一半。

答案 1 :(得分:0)

托管您自己的路由引擎,我经常使用https://github.com/Project-OSRM/osrm-backend

仅当不需要实时数据时,此选项才有用。