10

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

如何等待结果?这是我的代码:我的代码不等待 geocode.geocoder 所以我得到未定义而不是地理定位。

<!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>
4

1 回答 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>
于 2015-07-21T18:40:06.540 回答