我有以下功能:

$(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一起使用的地理编码地址。内部返回正确的值,外部返回未定义的。

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

先感谢您。

最佳答案

您可以通过这种方式进行操作,然后在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);
    }
});




这是有关地址解析服务工作方式的说明。


  正在访问地址解析服务
  异步,因为Google Maps
  API需要调用
  外部服务器。因此,你
  需要将回调方法传递给
  完成后执行
  请求。这个回调方法
  处理结果。请注意
  地址解析器可能返回多个
  结果。

10-05 20:38
查看更多