Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 多个Google Maps directions请求返回所有请求的最后响应_Javascript_Jquery_Ajax_Google Maps_Google Maps Api 3 - Fatal编程技术网

Javascript 多个Google Maps directions请求返回所有请求的最后响应

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

我正在尝试使用谷歌地图方向服务返回同一路线的三种旅行方式(驾驶、步行和骑自行车)。我可以成功地循环方法数组并将它们放入相关请求中,但所有三个请求都返回循环响应,这是数组中的最后一个方法。这与发送到Google的请求是异步的有关吗

此代码中的for each循环中似乎存在有问题的代码:

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 */});