матрица расстояний гугл карты javascript api3 - PullRequest
0 голосов
/ 20 мая 2011

Я играю с матрицей расстояний 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]);

, но у меня есть предупреждение "undefined".когда я помещаю команду alert в функцию обратного вызова, я получаю предупреждение, которое хочу.это почему???как я могу это исправить?

Спасибо заранее!

Ответы [ 2 ]

1 голос
/ 29 августа 2012
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]);

Попробуйте что-нибудь подобное

0 голосов
/ 20 мая 2011

Переместить предупреждение в обратный вызов.Функция является обратным вызовом, который выполняется асинхронно.

...