Google Maps APIを使用して、複数のルートからの運転距離を取得しています。各ルートは異なるドライバーによって使用されています。それらはすべて同じ開始点を持ちますが、異なる端点を持ち、複数のウェイポイントを持っている可能性があります。
私が抱えている問題は、APIが各ルートに名前を付ける方法を提供していないように見えるため、非同期で戻ってきたときに、どのルートがどのドライバーに属しているのかわからないことです。各ルートのアドレスが異なるのは事実ですが、DirectionsService応答オブジェクトは、送信したアドレスとは少し異なるアドレスを返します。たとえば、「Des Plaines、IL」は「DesPlaines、IL、USA」になり、比較の信頼性が低くなります。それらの。
APIでは、リクエストオブジェクトを使用して任意の文字列を送信し、一意の名前を付けることができないようです。それで、なにかお手伝いできますか?
私がしていることを明確にするのに役立つかもしれないコードスニペット:
$.getJSON(ajaxsource, function(data) {
var darr = data.driver_info, // includes driver name, start and end addresses
driver, start, end,
waypts = [];
for (var i=0,j=darr.length; i<j; i++) {
if (driver==$.trim(darr[i][8])) { // same driver, next destination
// start = end;
waypts.push({
location: end,
stopover: true });
} else {
waypts = [];
driver = $.trim(darr[i][8]);
start = $.trim(darr[i][4]);
}
end = $.trim(darr[i][2]);
if (i+1==j || driver!=$.trim(darr[i+1][8])) {
var request = { // route object
origin: start,
destination: end,
waypoints: waypts,
optimizeWaypoints: true,
travelMode: google.maps.DirectionsTravelMode.DRIVING
};
directionsDisplay = new google.maps.DirectionsRenderer();
directionsService.route(request, function(response, status) {
var legs = response.routes[0].legs;
// console.log(response);
for (var k=0; k<legs.length; k++) {
$('#results').append($('<li>').html("Driver " + driver +
"<br>starts at " + legs[k].start_address +
"<br>and drives " + legs[k].distance.text +
"<br>to end at " + legs[k].end_address));
}
});
};
}; // end for
}); // end getJSON
そのコードは必要に応じてすべてのルート情報を返しますが、非同期であるため、各結果のinは私の配列driver
にリストされている最後のドライバーの名前です。data.driver_info
私が必要としているのは、その特定のルートに関連付けられるべきドライバーをリストすることです。