我想要有一个函数来计算谷歌地图的路线动态地更改基于从.getJSON检索到的数据。我已经尝试在.done函数下包含函数calcRoute()的大部分内容,但是我在javascript控制台中收到属性waypoint中的错误。我无所适从,因为当我在.done下没有包含函数的大部分时,数组仍然是空白的(使用.getJSON进行异步调用。下面是为您提供更好主意的代码:通过使用.getJSON谷歌地图api
function calcRoute() {
var start = document.getElementById('start').value;
var end = document.getElementById('end').value;
var waypts = [];
var data = $.getJSON("/westcoast_map.php", {
westcoast_id: $('.opener').data('westcoast_id')
}, function(json) {
return json[1];
});
data.done(function(theData) {
waypts = theData[1];
console.log(waypts); //this spits out the array in the proper format, i.e. {location:city, state, stopover:true},...etc...
var request = {
origin: start,
destination: end,
waypoints: waypts,
optimizeWaypoints: true,
travelMode: google.maps.DirectionsTravelMode.DRIVING
};
directionsService.route(request, function(response, status) {
if (status == google.maps.DirectionsStatus.OK) {
directionsDisplay.setDirections(response);
var route = response.routes[0];
var summaryPanel = document.getElementById('directions_panel');
summaryPanel.innerHTML = '';
// For each route, display summary information.
for (var i = 0; i < route.legs.length; i++) {
var routeSegment = i + 1;
summaryPanel.innerHTML += '<b>Route Segment: ' + routeSegment + '</b><br>';
summaryPanel.innerHTML += route.legs[i].start_address + ' to ';
summaryPanel.innerHTML += route.legs[i].end_address + '<br>';
summaryPanel.innerHTML += route.legs[i].distance.text + '<br><br>';
}
}
});
});
}
我不完全相信你的问题是,如果你将当前的回调函数放在'.done()'部分的回调函数(json){return json [1]; }? – 2013-03-04 11:13:57
当其他代码运行时,数组将保持为空,因为它是异步的;你能给我一个代表你的意思的例子吗? – user1072337 2013-03-05 00:30:46