Я пытаюсь получить адрес, соответствующий требованиям к широте, долготе в переменной (в javascript). Я создал функцию обратного вызова (после прочтения на нем многочисленных сообщений), а код выглядит следующим образом. Теперь я хочу сохранить адрес в переменной под названием location3.google maps обратное геокодирование: передача переменных
Как ни странно, для предупреждения сразу после назначения местоположения3 оно не определено. Но если смотреть на 300 мс позже, тогда это дает правильное значение. Я хочу немедленно получить адрес, назначенный для location3. Любые предложения приветствуются.
function codeLatLng1(lat,long,callback) {
var geocoder = new google.maps.Geocoder();
var latlng = new google.maps.LatLng(lat,long);
if (geocoder) {
geocoder.geocode({'latLng': latlng}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
if (results[1]) {
callback(results[1].formatted_address);
myvariable=results[1].formatted_address;
} else {
alert("No results found");
}
} else {
alert("Geocoder failed due to: " + status);
}
});
}
}
lat1_last=37;long1_last=-100;
codeLatLng1(lat1_last,long1_last,function(locat) {location3=locat;});
alert (location3); // THIS ALERT SHOWS THAT IT IS STILL UNDEFINED
setTimeout(function(){alert (location3);},300); // THIS ALERT GIVES THE RIGHT ADDRESS
Привет, Эрик, Большое спасибо за ваше предложение. Да, предупреждение хорошо работает внутри обратного вызова без необходимости задержки, как вы предложили. Однако моя цель - использовать значение переменной «Location3» в инфобоксах (мне действительно не нужно оповещение) - как я могу назначить обратный геокодированный адрес непосредственно на «Location3» без необходимости задержки. Еще раз спасибо. – user2363675
Вы можете создать инфобокс внутри обратного вызова. Это хороший стиль программирования. Если вы должны создать его раньше, оставьте его невидимым, а затем пусть обратный вызов установит ярлык и сделает его видимым. –
Всегда будет задержка - вы получаете доступ к Интернету! Вы найдете его намного проще, если поместить большую часть своего кода в обратные вызовы. Тем не менее, это больше проблем, чем того стоит, но если вы хотите подождать, пока не будет определено location3, вам понадобится цикл, который проверяет, все ли он по-прежнему не определен так часто ... –