从Google Maps Geocoder v3返回地址

我有以下function:

$(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); }); 

我正在尝试返回地理编码的地址,以便与街景视图和Gmap一起使用。 Inside返回正确的值,外部返回underfined。

非常感谢所有的帮助,我确实在其他地方读过这样的方式无法返回值,但必须与可信赖的StackOverflow社区一起检查。

先感谢您。

您可以这样做,并在Geocode的回调函数中调用outputGeo函数。 基本上,您在地理编码回调之前访问r,因此r仍未定义:

 $(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); } }); 

以下是地理编码服务如何工作的说明。

访问地理编码服务是异步的,因为Google Maps API需要调用外部服务器。 因此,您需要传递一个回调方法,以便在请求完成时执行。 此回调方法处理结果。 请注意,地理编码器可能会返回多个结果。