Je travaille avec l'API google maps et chaque fois que je renvoie la variable à la fonction initialize de la fonction codeLatLng, elle prétend qu'elle n'est pas définie. Si j'imprime la variable à partir du codeLatLng cela se montre bien.Comment renvoyer une variable à partir du rappel de géocodeur Google Maps JavaScript?
var geocoder;
function initialize() {
geocoder = new google.maps.Geocoder();
var latlng = new google.maps.LatLng(40.730885,-73.997383);
var addr = codeLatLng();
document.write(addr);
}
function codeLatLng() {
var latlng = new google.maps.LatLng(40.730885,-73.997383);
if (geocoder) {
geocoder.geocode({'latLng': latlng}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
if (results[1]) {
return results[1].formatted_address;
} else {
alert("No results found");
}
} else {
alert("Geocoder failed due to: " + status);
}
});
}
}
imprime indéfinis
Si je fais:
var geocoder;
function initialize() {
geocoder = new google.maps.Geocoder();
var latlng = new google.maps.LatLng(40.730885,-73.997383);
codeLatLng();
}
function codeLatLng() {
var latlng = new google.maps.LatLng(40.730885,-73.997383);
if (geocoder) {
geocoder.geocode({'latLng': latlng}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
if (results[1]) {
document.write(results[1].formatted_address);
} else {
alert("No results found");
}
} else {
alert("Geocoder failed due to: " + status);
}
});
}
}
imprime New York, NY 10012, États-Unis
est-il possible de renvoyer la valeur de addr? comment dois-je attribuer l'addr à une variable? – AbtPst
@AbtPst: Vous ne pouvez rien retourner du résultat dans un appel asynchrone, car l'appel retourne avant qu'il y ait un résultat. Où j'ai placé le 'alert (addr);' est où vous pouvez utiliser le résultat.Il est possible d'affecter la valeur à une variable globale, mais vous devrez alors attendre que la valeur arrive. – Guffa
oui, ce serait bien. En fait, j'ai un tableau de lat longues valeurs. Je veux traiter le tableau de manière itérative et continuer à ajouter l'adresse à une liste. en passant, y a-t-il un moyen d'inverser le géocodage d'un tableau de valeurs de latitude à la fois? et comment j'affecte l'addr à une variable globale? puis-je juste faire x = addr dans la fonction? – AbtPst