我们如何从Google Direction API建议的替代路线默认获得从A点到B点的最短距离路线?默认情况下,它根据当前的交通状况为我们提供最短的持续时间路线。我注意到如果你打开“provideRouteAlternatives = true”,google会响应多个备用路由,我想知道我们是否可以向Google API发送一个参数,以便它始终返回最短距离路径
正如Rameshwor所提到的,Google返回的建议路线可能会针对旅程时间而非行程距离进行优化。如果指定了一个或多个航点,则无论如何只能返回一条航线,但是以编程方式,最好假设总是返回多条航线。
以下示例显示了使用jQuery查找具有最短行程距离的路线的简单方法;请注意,此代码未经过优化,但应该可以正常工作:
var route_options = [];
for (var i = 0; i < response.routes.length; i++)
{
var route = response.routes[i];
var distance = 0;
// Total the legs to find the overall journey distance for each route option
for (var j = 0; j < route.legs.length; j++)
{
distance += route.legs[j].distance.value; // metres
}
route_options.push({
'route_id': i,
'distance': distance
});
}
/*
route_options = [
{route_id:0, distance:35125},
{route_id:1, distance:22918},
{route_id:2, distance:20561}
];
*/
// Sort the route options; shortest to longest distance in ascending order
route_options.sort(function(a, b) {
return parseInt(a.distance) - parseInt(b.distance);
});
/*
route_options = [
{route_id:2, distance:20561},
{route_id:1, distance:22918},
{route_id:0, distance:35125}
];
*/
var shortest_distance = (route_options[0]['distance'] * 0.001); // convert metres to kilometres
然后,您可以访问“route_id”值以访问响应对象中的正确路由。
默认情况下,Google会根据当前的流量情况为我们提供最短时间的路由。我注意到,如果你打开“provideRouteAlternatives = true”,谷歌会回复多个替代路线。当您不要求备用路线时,默认情况下会获得最优化的路线,尽管这不一定针对距离进行了优化。如果您尝试获取最短路径,那么执行此操作的方法是让您的应用程序评估响应中每条路径的总距离,并以编程方式选择距离最短的路径。在请求中没有可以传递给Google的查询参数说“只返回最短路径”。
查看此演示http://webavenue.com.au/demo/google-shortest-distance/route.html
在实践中使用最短路线而不是最快路线通常不是一个好主意。
当最短路线不是最快时,在时间,燃油效率,有时甚至是人身安全方面,它可能是较低质量的路线。这些因素对于路上的大多数驾驶员来说更为重要。
有一些解决方法可能会产生更短的路由,但它们有明显的缺点,所以我建议不要使用它们:
我经常看到对最短路线的请求来自用例,其中目标是在一天和一周的特定时间的实际驾驶距离,例如,上班/下班的工人。在这些情况下,可以要求行驶方向,将departure_time
设置为一周(以后,而不是过去)的当天(和星期几)的相关时间,以获得受当时典型交通状况影响的路线。一天一周。
注意:仅当请求包含API密钥或Google Maps API Premium Plan客户端ID时,才可以使用此选项。