Dirección de retorno de Google Maps Geocoder v3

Tengo la siguiente función:

$(function() { var address = $("#address").text(); var r; function encodeAddress() { geocoder = new google.maps.Geocoder(); geocoder.geocode({'address' : address}, function(results, status) { if (status == google.maps.GeocoderStatus.OK) { results[0].geometry.location r = results[0].geometry.location console.log("inside:" + r); } else { alert("Google Maps had some trouble finding" + address + status); } }); } encodeAddress() console.log("outside:" + r); }); 

Estoy tratando de devolver la dirección geocodificada para usarla con Street View y Gmap. Inside devuelve el valor correcto y el exterior devuelve subestimado.

Toda la ayuda es muy apreciada. Leí en otra parte que no es posible devolver el valor de esta manera, pero tuve que consultar con la confiable comunidad StackOverflow.

Gracias de antemano.

Puede hacerlo de esta manera, y llamar a la función outputGeo dentro de la función de callback de Geocode. Básicamente, está accediendo a r antes de la callback de Geocode y, por lo tanto, r todavía no está definido:

 $(function() { var address = $("address").text(); var r; function encodeAddress() { geocoder = new google.maps.Geocoder(); geocoder.geocode({'address' : address}, function(results, status) { if (status == google.maps.GeocoderStatus.OK) { results[0].geometry.location; r = results[0].geometry.location; outputGeo(r); } else { alert("Google Maps had some trouble finding" + address + status); } }); } encodeAddress(); function outputGeo(result){ console.log("outside:" + result); } }); 

Aquí hay una explicación de cómo funciona el servicio de geoencoding.

El acceso al servicio de geoencoding es asíncrono, ya que la API de Google Maps necesita realizar una llamada a un servidor externo. Por esa razón, debe pasar un método de callback para ejecutar al completar la solicitud. Este método de callback procesa los resultados. Tenga en cuenta que el geocodificador puede devolver más de un resultado.