Вопрос по geocode, google-maps, javascript, asynchronous – GMaps JS Geocode: использование / передача переменных с функцией асинхронного геокода?

4

У меня есть список массивов объектов местоположения, и я использую некоторые из них для построения полного адреса, а затем геокодирую его. Как только я получу статус OK, я ставлю маркер на карту. Это все отлично работает. Однако теперь я также хотел бы разместить информационное окно для каждого маркера с другим свойством из моего списка массивов, LocationName. Код здесь:

function placeMarkers(myObjList){
var geocoder = new google.maps.Geocoder();
for(var i=0; i<myObjList.length; i++){
    var fullAddress = myObjList[i].Address + ", " + myObjList[i].City + ", " + myObjList[i].State + ", " + myObjList[i].Zip;
    /* The variable I would like to have access to in the geocode call */
    var locationName = myObjList[i].LocationName;

    geocoder.geocode( { 'address': fullAddress}, function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
            alert(locationName);
            var marker = new google.maps.Marker({
                map: map,
                position: results[0].geometry.location,
                clickable: true
            });
            markers.push(marker);
        } else {
            alert("Geocode was not successful for the following reason: " + status);
        }
    });
}
}

Предупреждение состоит в том, чтобы просто увидеть, что такое locationName, когда я получу этот статус в порядке. Но в тестировании это всегда всегда одна и та же ценность. Как только я смогу настроить это так, чтобы каждый раз отображать правильное значение, у меня выстраивается код для размещения информационных окон на маркере.

Любая помощь будет принята с благодарностью!

Ваш Ответ

1   ответ
4

different

for(var i=0; i<myObjList.length; i++){
    var fullAddress = myObjList[i].Address + ", " + myObjList[i].City + ", " + myObjList[i].State + ", " + myObjList[i].Zip;
    //begin scope block
    (function(){
        var locationName = myObjList[i].LocationName;
        var yourObject = myObjList[i];
         //etc.
        geocoder.geocode( ...);
    //end scope block
    })();
}

Error: User Rate Limit Exceeded

Похожие вопросы