0

距離行列http://code.google.com/apis/maps/documentation/javascript/services.html#distance_matrixで遊んでい ます

1 つの起点から複数の終点までの所要時間を取得します。私はこのコードを持っています:

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 に答える