如何等待谷歌geocoder.geocode?

时间:2013-08-15 13:27:39

标签: asynchronous undefined wait

请帮助我使用google geocoder.geocode。我知道这个函数运行异步,但我不知道如何处理它。

如何等待结果?这是我的代码: 我的代码不等geocode.geocoder所以我得到undefined而不是geolocation。

<!DOCTYPE html>
<html>     
  <head>        
    <title>Geocoding service     
    </title>          
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />       
    <meta http-equiv="content-language" content="cs" />         

    <meta name="viewport" content="initial-scale=1.0, user-scalable=no">            
    <link href="http://code.google.com//apis/maps/documentation/javascript/examples/default.css" rel="stylesheet">     
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>      
<script>

function codeAddress(callback) {   

  var address = document.getElementById('address').value;
  geocoder = new google.maps.Geocoder();
  geocoder.geocode( { 'address': address}, function(results, status) {
    if (status == google.maps.GeocoderStatus.OK) {
  } else {
      alert('Geocode was not successful for the following reason: ' + status);
    }
  },callback);  
}


function geocoder(result)  {
alert(codeAddress());
}

function button()  {  
  geocoder(codeAddress) ;
  }



    </script>      
  </head>     
  <body>         
    <div id="panel">             
      <input id="address" type="textbox" value="address">             
      <input type="button" value="Go" onclick="button()">         
    </div>         
    <div id="map-canvas">    
    </div>     
  </body>
</html>

1 个答案:

答案 0 :(得分:0)

  

我感谢网页找到了解决方案   http://recurial.com/programming/understanding-callback-functions-in-javascript/   在哪里回调逐步解释。

     

这是工作代码:

<!DOCTYPE html>
<html>     
  <head>        
    <title>Geocoding service     
    </title>          
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />       
    <meta http-equiv="content-language" content="cs" />         

    <meta name="viewport" content="initial-scale=1.0, user-scalable=no">            
    <link href="http://code.google.com//apis/maps/documentation/javascript/examples/default.css" rel="stylesheet">     
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>      
<script>

function codeAddress(callback) {   

  var address = document.getElementById('address').value;
  geocoder = new google.maps.Geocoder();
  geocoder.geocode( { 'address': address}, function(results, status) {
    if (status == google.maps.GeocoderStatus.OK) {
    souradnice = [results[0].geometry.location.lat(),results[0].geometry.location.lng()];
    callback(souradnice);
  } else {
      alert('Geocode was not successful for the following reason: ' + status);
    }
  });  
}


function gogo(){  
codeAddress(function(num) {
  alert(num);

});
}






    </script>      
  </head>     
  <body>         
    <div id="panel">             
      <input id="address" type="textbox" value="address">             
      <input type="button" value="Go" onclick="gogo()">         
    </div>         
    <div id="map-canvas">    
    </div>     
  </body>
</html>