【问题标题】:Return address from Google Maps Geocoder v3从 Google Maps Geocoder v3 返回地址
【发布时间】:2011-04-01 18:06:38
【问题描述】:

我有以下功能:

$(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 的地理编码地址。内部返回正确的值,外部返回underfined。

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

提前谢谢你。

【问题讨论】:

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


    【解决方案1】:

    您可以这样做,并在 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 需要调用 外部服务器。为此,你 需要传递一个回调方法到 完成后执行 要求。这个回调方法 处理结果。请注意, 地理编码器可能返回多个 结果。

    【讨论】:

    • 谢谢@kjy112 这似乎非常接近我的需要。它正在返回值,但我需要在 encodeAddress() 函数之外使用它,因为它需要在多个地方使用。我将如何在全球范围内使用结果?
    • @jnolte 您可以将所有“要做的逻辑”放在一个函数中,并在地理编码返回后在回调函数中调用它,同时将返回数据注入您的全局var r。基本上,在地理编码返回之前,您将无法访问 r
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-05
    • 2012-08-09
    • 1970-01-01
    相关资源
    最近更新 更多