2013-08-15 11 views
7

Per favore, aiutami con google geocoder.geocode. So che questa funzione funziona in modo asincrono ma non so come gestirlo.Come aspettare google geocoder.geocode?

Come aspettare per il risultato? Ecco il mio codice: Il mio codice non aspetta geocode.geocoder quindi ottengo undefined invece di geolocalizzazione.

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

risposta

0

ho trovato una soluzione grazie alla pagina web http://recurial.com/programming/understanding-callback-functions-in-javascript/ dove è passo per passo callback spiegato. Codice

Qui sta lavorando:

<!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> 
+0

ciò che è num qui nel parametro funzionale – Techy