У меня есть следующий асинхронный метод геокодирования ниже, он работает как ожидалось, принимая адрес из настраиваемого массива объектов, у меня есть, моя проблема заключается в отображении результата обратно на объект [i], который уволил этот метод, посмотрите результаты, только верните отформатированный адрес, который отличается от того, который я ввел, «Google добавляет некоторые коды областей, изменения на улицу и т. д.» поэтому, когда я получаю эти результаты, у меня нет возможности сопоставить новые координаты Lat и Lng, которые я получил для каждого объекта из-за асинхронного характера этого метода, и результаты не возвращаются в порядке. Любая идея заключается в том, что я могу здесь сделать?Google geocoder.geocode, асинхронное сопоставление переменных
Спасибо.
Редактировать: мои мысли будут создавать способ вернуть результаты в порядок, изменить это на синхронный, не идеально, я знаю, и я не могу найти никаких примеров.
функция iterateAndAddress (objArray) {
for(var i=0; i< objArray.length; i++) {
var address = objArray[i].BillingStreet +' '+objArray[i].BillingCity+' '+objArray[i].BillingCountry;
var geocoder = new google.maps.Geocoder();
console.log('Address = '+address);
if(geocoder) {
geocoder.geocode({ 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
//console.log(results);
var lat = results[0].geometry.location.lat();
var lon = results[0].geometry.location.lng();
console.log('Address : '+results[0].formatted_address);
}else if(status == 'OVER_QUERY_LIMIT') {
}
else{
}
});
}
}
}
Возможный дубликат [Сохранение результатов геокодирования массиву - Проблема закрытия] (http://stackoverflow.com/questions/13067403/saving-geocoder-results-to-an-array-closure-trouble) – geocodezip