Я работаю с небольшим проектом javascript, который берет координаты, хранящиеся в файле xml/kml, и отображает их в пользовательском приложении Google Maps. У меня все работает так, как я хочу, кроме обратного геокодирования. Я могу отображать отформатированный адрес, когда я запускаю код внутри функции обратного вызова, но я не могу найти способ сохранить адрес для последующего использования (для динамических событий, таких как отображение полного адреса, когда пользователь нажимает на маркер).Получить адрес из обратного геокодированного обратного вызова
Есть ли способ сохранить адрес внутри функции обратного вызова, а затем получить его позже? Всякий раз, когда я пытаюсь, он говорит, что адрес не определен. Смотрите ниже:
var address;
var geocoder = new google.maps.Geocoder();
var latlng = new google.maps.LatLng(lat, lng);
geocoder.geocode({'latLng': latlng}, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
if (results[1]) {
address = results[1].formatted_address;
alert(address); // this displays correctly
}
else {
alert("No results found");
}
}
else {
alert("Geocoder failed due to: " + status);}
}
);
alert(address); // this displays 'undefined'
Благодаря @Jordan, я полагал, что это связано с тем, что обратный вызов является асинхронным. Я просто просто переписал код 'geocoder.gecode' в событие обработчика' click'. – Austin