【问题标题】:jQuery function failed to pass Geocode information to variablejQuery 函数无法将地理编码信息传递给变量
【发布时间】:2012-02-14 01:10:36
【问题描述】:
<script>
var geocoder;
var loc1;
var loc;


$(document).ready(function() { 
    $("#testForm").submit(function(e) {
        e.preventDefault();
        loc1 = searchAddress($('#Q1').val());
        $.post('demofindcar_p.php',{lat:loc1.lat(),lng:loc1.lng()},function(result){
            $('#output').empty().append(result);
            });
    });
});


// - Functions here - //
function searchAddress(adr) {
    geocoder = new google.maps.Geocoder();  
    geocoder.geocode({address:adr}, function(result){
        loc = result[0].geometry.location;
    });
    return loc;
}


</script>

我有上面的代码。它由一个 searchAddress 函数组成,该函数接收用户从表单输入的地址,并通过“loc”变量返回纬度和经度信息。

AJAX 部分接收 lat lng 信息并使用我数据库中的地址计算直线距离。这部分工作正常。

但是,看下面的代码:

loc1 = searchAddress($('#Q1').val());

我无法将 loc 传递给 loc1。 我在 $.post{} 下收到一条错误消息:

未捕获的类型错误:无法调用未定义的方法 'lat'。

这段代码有什么问题??? :(

【问题讨论】:

    标签: jquery ajax google-maps-api-3 geocode


    【解决方案1】:

    地理编码器的工作方式与您实现它的方式不同。 function(result) 回调不会公开 loc 以供您返回。我会尝试这样的事情:

    $(document).ready(function() { 
      $("#testForm").submit(function(e) {
        e.preventDefault();
        loc1 = searchAddress($('#Q1').val());
      });
    });
    
    function searchAddress(adr) {
      geocoder = new google.maps.Geocoder();  
      geocoder.geocode({address:adr}, function(result){
        loc = result[0].geometry.location;
        $.post('demofindcar_p.php', {lat:loc.lat(),lng:loc.lng()}, function(result){
          $('#output').empty().append(result);
        });
      });
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-02
      • 2011-01-18
      • 1970-01-01
      • 2012-06-19
      • 2014-10-31
      • 1970-01-01
      • 1970-01-01
      • 2013-01-29
      相关资源
      最近更新 更多