2011-10-23 3 views
1

これは私が持っているものです。アドレスをジオコードに変換すると、 "undefined"が返されます。なぜですか?

http://jsfiddle.net/JhCKW/1/

イム使用して、Googleマップv3では、ジオコード。

私は関数showAddress(param)を作成しました。これはパラメータをとり、それがアドレスであればコードを返し、それが0を返すならばそれを返します。

リンクをチェックすると、私はこのコードを書いたことがわかりますアラートは "未定義"です。

ここで何が間違っていますか?

答えて

2

ああ、私はついに事実を実感しました。問題はGoogleマップにはありません。 showAddressからではなく、コールバックから結果を返します。だから、実際にはどこにも行きません。コールバックを使用して結果を表示する必要もあります。ただ、このように:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script> 
<script src="http://maps.google.com/maps/api/js?sensor=false" type="text/javascript"></script> 

<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?libraries=geometry&sensor=false"></script> 
<script type="text/javascript"> 
    var geocoder; 
    function showAddress(address, callback) 
    { 
    if (typeof(geocoder) == 'undefined') geocoder = new google.maps.Geocoder(); 

    geocoder.geocode({ 'address': address}, function(results, status) { 
     if (status == google.maps.GeocoderStatus.OK) { 
     callback(results[0].geometry.location); 
     } else { 
     callback(0); 
     } 
    }); 
    } 

    $(document).ready(function(){ 
    $('#address').blur(function(){ 
     showAddress($('#address').val(), function(result) 
     { 
     if (result === 0) 
      alert('Adressen not found'); 
     else{ 
      alert(result); 
      $('#cords').val(result); 
     } 
     }); 
    }); 
    }); 
</script> 

<input type="text" name="address" id="address"> 

あなたはここで働くことを確認することができます:

関連する問題