Estoy trabajando con la API de google maps y cada vez que devuelvo la variable a la función de inicialización de la función codeLatLng, dice indefinido. Si imprimo la variable desde el códigoLatLng, se muestra bien.¿Cómo devuelvo una variable de la devolución de llamada del geocodificador JavaScript de Google Maps?
var geocoder;
function initialize() {
geocoder = new google.maps.Geocoder();
var latlng = new google.maps.LatLng(40.730885,-73.997383);
var addr = codeLatLng();
document.write(addr);
}
function codeLatLng() {
var latlng = new google.maps.LatLng(40.730885,-73.997383);
if (geocoder) {
geocoder.geocode({'latLng': latlng}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
if (results[1]) {
return results[1].formatted_address;
} else {
alert("No results found");
}
} else {
alert("Geocoder failed due to: " + status);
}
});
}
}
imprime indefinidos
si lo hago:
var geocoder;
function initialize() {
geocoder = new google.maps.Geocoder();
var latlng = new google.maps.LatLng(40.730885,-73.997383);
codeLatLng();
}
function codeLatLng() {
var latlng = new google.maps.LatLng(40.730885,-73.997383);
if (geocoder) {
geocoder.geocode({'latLng': latlng}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
if (results[1]) {
document.write(results[1].formatted_address);
} else {
alert("No results found");
}
} else {
alert("Geocoder failed due to: " + status);
}
});
}
}
imprime Nueva York, NY 10012, USA
es posible devolver el valor de addr? ¿cómo debo asignar el addr a una variable? – AbtPst
@AbtPst: No puede devolver nada del resultado en una llamada asincrónica, ya que la llamada vuelve antes de que haya un resultado. Donde coloqué la 'alerta (addr);' es donde puede usar el resultado.Es posible asignar el valor a una variable global allí, pero aún tendría que esperar a que llegue el valor. – Guffa
sí, estaría bien. en realidad tengo una matriz de valores de latitud larga. Quiero procesar la matriz de forma iterativa y seguir agregando la dirección a una lista. por cierto, ¿hay alguna manera de revertir el geocodificación de una serie de valores lat lon a la vez? y ¿cómo asigno el addr a una variable global? ¿Puedo hacer x = addr dentro de la función? – AbtPst