0

我玩距离矩阵 http://code.google.com/apis/maps/documentation/javascript/services.html#distance_matrix

获取从一个起点到多个目的地的持续时间。我有这个代码:

var duration = new Array();
    var service = new google.maps.DistanceMatrixService();
    service.getDistanceMatrix(
    {
        origins: [origin],
        destinations: destination,
        travelMode: google.maps.TravelMode.DRIVING,
        avoidHighways: false,
        avoidTolls: false
    }, 
    function(response, status)
    {
        if (status == google.maps.DistanceMatrixStatus.OK)
        {
            var destinations = response.destinationAddresses;
            var results = response.rows[0].elements;

            for (var j = 0; j < results.length; j++)
                duration[j] = results[j].duration.value;
        }
    });
    alert(duration[0]);

但我有警报“未定义”。当我将警报命令放在回调函数中时,我得到了我想要的警报。这是为什么???我该如何解决?

提前谢谢你!

4

2 回答 2

1
var duration = new Array();
function calculate_distance(){
    var service = new google.maps.DistanceMatrixService();
    service.getDistanceMatrix(
    {
        origins: [origin],
        destinations: destination,
        travelMode: google.maps.TravelMode.DRIVING,
        avoidHighways: false,
        avoidTolls: false
    }, 
    function(response, status)
    {
        if (status == google.maps.DistanceMatrixStatus.OK)
        {
            var destinations = response.destinationAddresses;
            var results = response.rows[0].elements;

            for (var j = 0; j < results.length; j++)
                duration[j] = results[j].duration.value;
        }
    });
}
google.maps.event.addListener(autocomplete, 'place_changed', calculate_distance);
alert(duration[0]);

尝试任何类似的东西

于 2012-08-29T00:31:52.047 回答
0

将警报移动到回调中。该函数是一个异步执行的回调。

于 2011-05-20T03:46:33.100 回答