我正在使用Google Maps API来获取多条路线的行驶距离。每条路线都由不同的司机走;它们都有相同的起点但不同的终点,并且可能有多个航点。
我遇到的问题是 API 似乎没有给我任何方法来命名每条路线,所以当它们异步返回时,我无法确定哪条路线属于哪个驱动程序。的确,每条路线都有不同的地址,但 DirectionsService 响应对象返回的地址与我发送的地址略有不同——例如,“伊利诺伊州德斯普莱恩斯”变为“伊利诺伊州德斯普莱恩斯”——这使得比较不可靠那些。
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
该代码将根据需要返回所有路线信息,但由于它是异步的,因此每个结果中的都是我的数组driver
中列出的最后一个驱动程序的名称。data.driver_info
我需要的是列出应该与该特定路线相关联的驱动程序。