Вызов гуглмаповской службы DistanceMatrixService в цикле

mstdmstd

Новичок
У google map есть служба DistanceMatrixService (
https://developers.google.com/maps/documentation/javascript/distancematrix )

Наэтой же старнице написано "Accessing the Distance Matrix service is asynchronous, since the Google Maps API needs to make a call to an external server"

Мне нужно получить расстояние от одной точки сразу нескольких точек - и проболема в том когда приходит ответ этой службы я не могу сопоставить
у какому именно запросу он относится
В нете нашел ( http://stackoverflow.com/questions/14061990/javascript-pass-parameter-to-callback-or-set-variable-value-in-distancematrixsta ) как передать еще один параметр в запрос этой службы
Делаю :
Код:
    for (var i = 0; i < eventLocationsList.length; i++) { // Все элементы массива
        this_m_curreventLocationId= eventLocationsList[i].id // Дополнительный ID параметр передаваемый в callbackEvents
        $("#info_textarea").html( $("#info_textarea").html() + " " + "\r NOW+  this_m_curreventLocationId::" + this_m_curreventLocationId  ) // мемо поле с отладочной инфой
        service.getDistanceMatrix( {
            origins: [defaultLocation], // Точка относительно которой измеряется расстояние
            destinations: [ new google.maps.LatLng(eventLocationsList[i].lat, eventLocationsList[i].lng) ], // следующая точка
            travelMode: google.maps.TravelMode.DRIVING,
            unitSystem: google.maps.UnitSystem.METRIC,
            avoidHighways: false,
            avoidTolls: false
        }, function(response, status) {callbackEvents( response, status, this_m_curreventLocationId ) } );
                //}, callbackEvents);
    }

function callbackEvents(response, status, itemId) { // вызов колбека с 3им параметорм
    $("#info_textarea").html( $("#info_textarea").html() + " " + "\r!!! callbackEvents  itemId::" + itemId  )
    ...

я вывожу отладочную инфу в мемо info_textarea чтобы не выводить алерты и в нем вижу :

Код:
 NOW+  this_m_curreventLocationId::1
NOW+  this_m_curreventLocationId::2
NOW+  this_m_curreventLocationId::3
NOW+  this_m_curreventLocationId::4
NOW+  this_m_curreventLocationId::5
NOW+  this_m_curreventLocationId::6
!!! callbackEvents  itemId::6
!!! callbackEvents  itemId::6
!!! callbackEvents  itemId::6
!!! callbackEvents  itemId::6
!!! callbackEvents  itemId::6
!!! callbackEvents  itemId::6
то есть третий и необходимый параметр всегда имеет значения последнего вызова

Дела как и во 2м примере из ссылки выше:
Код:
    for (var i = 0; i < eventLocationsList.length; i++) {
        //alert( "i::"+i+"  eventLocationsList[i]::"+var_dump(eventLocationsList[i]) )
        this_m_curreventLocationId= eventLocationsList[i].id
        $("#info_textarea").html( $("#info_textarea").html() + " " + "\r NOW+  this_m_curreventLocationId::" + this_m_curreventLocationId  )
        service.getDistanceMatrix({
            origins: [defaultLocation],
            destinations: [new google.maps.LatLng(eventLocationsList[i].lat, eventLocationsList[i].lng)],
            travelMode: google.maps.TravelMode.DRIVING,
            unitSystem: google.maps.UnitSystem.METRIC,
            avoidHighways: false,
            avoidTolls: false
        },

            function callback(response, status)
            {
                if (status == google.maps.DistanceMatrixStatus.OK)
                {
                    $("#info_textarea").html( $("#info_textarea").html() + " " + "\r!!! ZZcallbackEvents  this_m_curreventLocationId::" + this_m_curreventLocationId  )
и результат то же
Как это можно побороть ?
 

WMix

герр M:)ller
Партнер клуба
как бы "В нете нашел" переменную внутри функции, со своим пространством имен, а сделал все в одном
 

mstdmstd

Новичок
Можно ли чуть подробнее как пространство имен относится к вопросу поста?
 
Сверху