Я пытаюсь использовать API Карт Google для получения названия города из почтового индекса. Это не моя сила (я скорее специалист по PHP), поэтому я использую пример кода, который я нашел, с некоторыми изменениями, предложенными другом.
Проблема в том, что после вызова функции моя глобальная переменная с названием города все еще имеет начальное значение null. Однако, если я сообщу об этом значении, остальная часть обработки неожиданно загрузит правильное значение! Я попытался установить задержку, чтобы определить, не слишком ли медленно Google возвращает значение, но это не имеет значения.
Вот функция:
var geocoder = new google.maps.Geocoder();
function getGoogleAddress(zipcode) {
//var gcity = "N/A"; switch to using global var defined above
geocoder.geocode( { 'address': zipcode}, function (result, status) {
for (var component in result[0]['address_components']) {
for (var i in result[0]['address_components'][component]['types']) {
if (result[0]['address_components'][component]['types'][i] == "locality") {
gcity = result[0]['address_components'][component]['short_name'];
break;
}
}
}
});
}
И вот откуда он вызывается ... включая предупреждение и паузу:
gcity="";
getGoogleAddress(form.zip.value);
var holdcity = gcity;
var date = new Date();
var curDate = null;
do { curDate = new Date(); }
while(curDate-date < 2000);
alert(gcity);
Как я уже сказал, предупреждение возвращает ноль, но остальная часть обработки имеет правильное название города в gcity. Если я пропущу предупреждение, остальная часть обработки завершится неудачно, потому что gcity имеет значение null.
Любые советы или предложения приветствуются. Спасибо.