从Google Maps Api获取具有多个航路点的路线的最短(非最快)距离

时间:2017-01-29 14:41:12

标签: google-maps google-maps-api-3 google-direction google-distancematrix-api

我有一条路线有几个航点A,B,C,D ...... 我想以相同的顺序通过所有航点获得这条航线的最短距离。

意思是,我不想优化航点的顺序。我只是想得到最短的路线。 Google Distance Api为我提供了最快路线,而不是最短

谷歌方向API给我所有的路线,然后我可以过滤最短的路线,但为此我必须创建两个循环。一个循环通过航路点(A - B,B - C,C - D)和每个航段循环通过可能的路线找到最短路径。

我想知道是否有更好更优雅的方法。

1 个答案:

答案 0 :(得分:0)

首先,我希望你没有要求3种不同的路线,因为你会以这种方式很快耗尽google api限制。现在,询问通过每个航路点的路线的正确方法是在angularjs中:

uiGmapGoogleMapApi.then(function(maps) {
        directionsService = new maps.DirectionsService();
});

directionsService.route(request, function(response, status) {});

请求为:

{
  origin: 'A',
  destination: 'D',
  waypoints: [
{
  location: 'C',
  stopover: false
}],
provideRouteAlternatives: false,
travelMode: 'DRIVING'
}

与googleapi手册google

一样

现在,如果您确实有很多可用于谷歌API密钥的请求,您可以按照说法使用,提供路由选择:真,并找到距离最短的那个。

另一种选择是将旅行模式更改为步行,因为这确实给出了短路路线,但这对于只有一个方向的街道非常糟糕。