如何等待谷歌geocoder.geocode?

问题描述 投票:8回答:1

请帮助我使用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>
asynchronous undefined wait
1个回答
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>
© www.soinside.com 2019 - 2024. All rights reserved.