Javascript 多个Google Maps directions请求返回所有请求的最后响应
我正在尝试使用谷歌地图方向服务返回同一路线的三种旅行方式(驾驶、步行和骑自行车)。我可以成功地循环方法数组并将它们放入相关请求中,但所有三个请求都返回循环响应,这是数组中的最后一个方法。这与发送到Google的请求是异步的有关吗 此代码中的for each循环中似乎存在有问题的代码:Javascript 多个Google Maps directions请求返回所有请求的最后响应,javascript,jquery,ajax,google-maps,google-maps-api-3,Javascript,Jquery,Ajax,Google Maps,Google Maps Api 3,我正在尝试使用谷歌地图方向服务返回同一路线的三种旅行方式(驾驶、步行和骑自行车)。我可以成功地循环方法数组并将它们放入相关请求中,但所有三个请求都返回循环响应,这是数组中的最后一个方法。这与发送到Google的请求是异步的有关吗 此代码中的for each循环中似乎存在有问题的代码: directionsDisplay = new google.maps.DirectionsRenderer(); var origin = new google.maps.LatLng(51.5072, 0.12
directionsDisplay = new google.maps.DirectionsRenderer();
var origin = new google.maps.LatLng(51.5072, 0.1275);
var destination = new google.maps.LatLng(53.7997, 1.5492);
map = new google.maps.Map(document.getElementById('map-canvas'));
var request = {
origin: origin,
destination: destination
};
var methods = new Array("DRIVING", "WALKING", "BICYCLING");
var route = new Array();
$.each(methods, function(key, method) {
request.travelMode = google.maps.TravelMode[method];
console.log(request.travelMode);
directionsService = new google.maps.DirectionsService();
directionsService.route(request, function(response) {
directionsDisplay.setDirections(response);
route[method] = directionsDisplay.getDirections();
console.log(route[method].routes[0].legs[0].steps[0].travel_mode);
//console.log(route.routes[0].legs[0].duration.text);
//console.log(Math.round(Math.round(route.routes[0].legs[0].distance.value/1000)*0.6214));
});
});
请查看中的代码以查找完整代码。控制台中会打印出应该发送的方法,然后是响应中包含的旅行方法。
请求
是一个参考,使用此参考的任何地方都可以看到此参考上的所有更改
创建请求的副本(使用所需的travelMode)并将此副本用作route()的参数
更新的fiddle:方向服务是异步的。请参阅我在Hi@geocodezip中的评论,我回复了您要求的信息:)我仍然不确定如何实现您的建议,尽管:/updated(使用函数闭包)。
directionsService.route($.extend({},
request,
{travelMode: google.maps.TravelMode[method]}),
function(response) {/*your code */});