jQuery函数无法将Geocode信息传递给变量

时间:2012-01-19 11:05:29

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

<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信息并使用我的数据库中的addrsses计算直线距离。这部分工作正常。

但是,请查看以下代码:

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

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

未捕获的TypeError:无法调用未定义的方法'lat'。

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

1 个答案:

答案 0 :(得分:0)

地理编码器的工作方式与您实施它的方式不同。 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);
    });
  });
}