我有一条路线有几个航点A,B,C,D ...... 我想以相同的顺序通过所有航点获得这条航线的最短距离。
意思是,我不想优化航点的顺序。我只是想得到最短的路线。 Google Distance Api为我提供了最快路线,而不是最短。
谷歌方向API给我所有的路线,然后我可以过滤最短的路线,但为此我必须创建两个循环。一个循环通过航路点(A - B,B - C,C - D)和每个航段循环通过可能的路线找到最短路径。
我想知道是否有更好更优雅的方法。
答案 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密钥的请求,您可以按照说法使用,提供路由选择:真,并找到距离最短的那个。
另一种选择是将旅行模式更改为步行,因为这确实给出了短路路线,但这对于只有一个方向的街道非常糟糕。