function instate(loc)
{
var a;
var geocoder = new google.maps.Geocoder;
var infowindow = new google.maps.InfoWindow
geocoder.geocode({'location': loc}, function(results, status) {
if (status === google.maps.GeocoderStatus.OK) {
if (results[1]) {
map.setZoom(5);
var arrAddress = results[0].address_components;
$.each(arrAddress, function (i, address_component) {
if (address_component.types[0] == "administrative_area_level_1"){
a = address_component.short_name;
console.log(a);
}
//return false; // break the loop
});
} else {
window.alert('No results found');
}
} else {
window.alert('Geocoder failed due to: ' + status);
}
});
}
Код выше может распечатать правильное значение «a» в консоли, но когда я положил console.log (a) внизу функции, как показано ниже, он не может напечатать правильное значение и просто распечатать «undefined», почему?Почему я не могу получить геолокацию только вне этой функции
function instate(loc)
{
var a;
var geocoder = new google.maps.Geocoder;
var infowindow = new google.maps.InfoWindow
geocoder.geocode({'location': loc}, function(results, status) {
if (status === google.maps.GeocoderStatus.OK) {
if (results[1]) {
map.setZoom(5);
var arrAddress = results[0].address_components;
$.each(arrAddress, function (i, address_component) {
if (address_component.types[0] == "administrative_area_level_1"){
a = address_component.short_name;
}
//return false; // break the loop
});
} else {
window.alert('No results found');
}
} else {
window.alert('Geocoder failed due to: ' + status);
}
});
console.log(a);
}
http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-asynchronous-call/14220323#14220323 – Teemu
Ну, спасибо! –