从Google Maps Geocoder v3返回地址

时间:2011-04-01 18:06:39

标签: javascript jquery ajax google-maps google-geocoder

我有以下功能:

$(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社区核实。

提前谢谢。

1 个答案:

答案 0 :(得分:4)

您可以这样做,并在Geocode的回调函数中调用outputGeo函数。基本上,您在Geocode回调之前访问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);
    }
});

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

  

访问地理编码服务是   异步,自谷歌地图   API需要调用一个   外部服务器。出于这个原因,你   需要传递一个回调方法   在完成后执行   请求。这个回调方法   处理结果。请注意   地理编码器可能会返回多个   结果