我想使用Google Maps v3获得A点和B点之间的最短路线,并在X点之间设置X个航路点。
对于此示例,我要计算A和B之间的最短路线,并在它们之间使用C,D,E航路点。
为此,我使用距离矩阵服务来查找[AB,AC,AD],[BC,BD,BE],[CD,CE],[DE]之间的距离,结果如下:
A)地址A [B:4,C:1.4,D:1.4]始终是路线的起点
B)地址B [C:3.8,D:1.3,E:3.1]
C)地址C [D:1.2,E:3.1]
D)地址D [E:2.7]
E)地址E-始终是路线终点
路线1:A + B + C + D + E = 4 + 3.8 + 1.2 + 2.7 = 11.7Kms
路线2:A + C + B + D + E = 1.4 + 3.8 + 1.3 + 2.7 = 9.2公里
路线3:A + D + B + C + E = 1.4 + 1.3 + 3.8 + 3.1 = 9.6Kms
路线:A + B + D + C + E = 4 + 1.3 + 1.2 + 3.1 = 9.6Kms
路线5:A + C + D + B + E = 1.4 + 1.2 + 1.3 + 3.1 = 7公里
路线6:A + D + C + B + E = 1.4 + 1.2 + 3.8 + 3.1 = 9.5公里
在这种情况下,冠军是5号公路,但我有三个问题:
这对Google地图计费量大的自杀吗?考虑到路由最多包含12个地址,包括开始和结束地址。
就JavaScript性能而言,这是自杀吗?
是否有更好的方法来解决此问题?
预先感谢
答案 0 :(得分:0)
如何?
保留所有距离的列表(让我们说A-> F,带有B,C,D和E的中点):
A: AB, AC, AD, AE
B: BC, BD, BE, BF
C: CB, CD, CE, CF
D: DB, DC, DE, DF
E: EB, EC, ED, EF
让我们说我们根据距离对它们进行排序。
从A中选择最短的距离(假设它是AC)。
从C中选择到另一个中点(CE?)的最短距离
重复此操作,得到类似A-C-E-B-D-F的信息。将该距离存储为d_min。
返回并尝试其他路径。我们可以更改的第一件事是E-B,我们可以更改为E-D。 A-C-E-D-B比A-C-E-B-D-F长吗?如果是这样,请再回去尝试A-C-B。如果没有,请针对d_min测试A-C-E-D-B-F。
以此类推-这样可能会为您节省一些较长的路线,并且 会找到最短的路线,尽管它可以测试所有排列。我认为没有比这更快的方法了。