我正在尝试整理由谷歌地图生成的距离数组。我需要将我的列表按从近到远的顺序排序。我可以使用directionsService api示例很好地显示所有方向和距离,但我无法弄清如何在函数外检索该信息以便我可以对其进行排序。
function calcDistances() {
for (var x = 0; x < wineries.length; x++) {
var winery = wineries[x];
var trdistances = [];
var request = {
origin: map.getCenter(),
destination: new google.maps.LatLng(winery[1], winery[2]),
travelMode: google.maps.DirectionsTravelMode.DRIVING
};
directionsService.route(request, function(response, status) {
if (status == google.maps.DirectionsStatus.OK) {
var route = response.routes[0];
var summaryPanel = document.getElementById("tasting_rooms_panel");
// For each route, display summary information.
for (var i = 0; i < route.legs.length; i++) {
//this works fine and displays properly
summaryPanel.innerHTML += route.legs[i].distance.text;
//I want to store to this array so that I can sort
trdistances.push(route.legs[i].distance.text);
}
}
});
alert(trdistances[0]);//debug
}
}
正如代码中所注释的那样,我可以填充summaryPanel.innerHTML,但是当我填充数组trdistances时,警报会给我“未定义”。 这是一些新手javascript编码错误吗? 我阅读了关于变量范围的内容,这应该可以工作。 帮帮我,智者。
directionsService.route
的 for 循环之后尝试使用alert(trdistances[0]);//debug
进行调试。 - KJYe.Namealert(trdistances[0])
却没有得到任何结果时,原因是回调函数尚未被调用,因此trdistances[0]
中没有任何内容,所以你需要在回调返回后再调用该逻辑。 - KJYe.Name