1
<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>

上記のコードがあります。ユーザーがフォームから入力した住所を受け取り、「loc」変数を介して緯度と経度の情報を返す searchAddress 関数で構成されます。

AJAX 部分は緯度経度情報を取り込み、データベース内のアドレスを使用して直線距離を計算します。この部分は正常に動作します。

ただし、次のコードを見てください。

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

loc1 に loc を渡すことができません。$.post{} の下にエラー メッセージが表示されました。

キャッチされていない TypeError: 未定義のメソッド 'lat' を呼び出せません。

このコードの問題は何ですか??? :(

4

1 に答える 1

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);
    });
  });
}
于 2012-01-19T17:17:13.787 に答える