У вас проблема замкнутого контура.Похоже, вы пытаетесь исправить это, добавив закрытие return function(k)...
, но все это происходит внутри функции обратного вызова, поэтому оно не будет выполняться до тех пор, пока цикл не завершится и i
не покажет свое окончательное значение.
Вы должны вытолкнуть эту обертку на уровень, чтобы она находилась прямо внутри цикла:
for (var i = 0; i < addresses.length; i++) {
geocoder2.getLocations(addresses[i].where, function(k) { //a callback
return function(response){
Lat[k] = response.features[0].centroid.coordinates[0];
Lng[k] = response.features[0].centroid.coordinates[1];
latlng = new google.maps.LatLng(Lat[k], Lng[k]);
MarkerArray[k] = new google.maps.Marker({
map: map,
position: latlng,
zIndex: k,
title: addresses[k].who,
icon: icons(addresses[k].type.trim())
});
}
}(i)); // binding *here* instead!
}
Или используйте Function # bind , чтобы избежать вложенной функции.