Google Direction APIが提案する代替ルートから、デフォルトでポイントAからBまでの最短距離のルートを取得するにはどうすればよいですか?デフォルトでは、現在の交通状況に応じて最短のルートが表示されます。「provideRouteAlternatives=true」をオンにすると、Googleが複数の代替ルートで応答することに気付きました。デフォルトで常に最短距離のルートを返すように、GoogleAPIにパラメータを送信できるかどうか疑問に思いました。
3 に答える
Rameshwor が述べたように、Google から返される推奨ルートは、移動距離ではなく移動時間に合わせて最適化されている場合があります。1 つ以上のウェイポイントが指定されている場合は、とにかく 1 つのルートのみが返される可能性がありますが、プログラム的には、常に複数のルートが返されると想定することをお勧めします。
次の例は、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 が複数の代替ルートで応答することに気付きました。代替ルートを要求しない場合、デフォルトで最も最適化されたルートが取得されますが、これは必ずしも距離に対して最適化されているわけではありません。最短ルートを取得しようとしている場合、これを行う方法は、アプリケーションで応答内の各ルートの合計距離を評価し、最短距離のルートをプログラムで選択することです。「最短ルートのみを返す」というリクエストで Google に渡すことができるクエリ パラメータはありません。
このデモを確認してください http://webavenue.com.au/demo/google-shortest-distance/route.html