Bonjour

Je viens à vous car j'ai un phénomène inexpliqué. Pour résumer mon problème, j'ai un calcul qui se lance via l'API de Google Maps, qui fait son calcul et lance une fonction une fois le résultat calculé. La fonction lancée modifie des valeurs de mon tableau, et j'aimerai avoir ces valeurs.

Le code est ici
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
function getLatLong(address) {
// J'initialise les éléments du tableau
	document.getElementById("lat").innerHTML = "";
	document.getElementById("lng").innerHTML = "";
	if (geocoder) {
		geocoder.setBaseCountryCode('fr');
		geocoder.getLatLng(
			address,
// Ici la fonction retournée une fois la latitude/longitude calculée
			function(point) {
				if (!point) {
					document.getElementById("lat").innerHTML = "null";
					document.getElementById("lng").innerHTML = "null";
				} else {
					document.getElementById("lat").innerHTML = point.lat().toFixed(7);
					document.getElementById("lng").innerHTML = point.lng().toFixed(7);
					alert("Retour de Google : " + document.getElementById("lat").innerHTML);
				}
			}
		);
	}
// Un count pour éviter que la fonction tourne en boucle (temporaire, pour les tests)
	count = 0;
	while ((document.getElementById("lat").innerHTML == "") && (count < 10000)) { count++; }
	alert("Fin du while : '" + (document.getElementById("lat").innerHTML) + "'");
	return "Return final : '" + (document.getElementById("lat").innerHTML) + "' (" + count + ")";
}
Je lance simplement cette fonction en faisant un alert() du résultat.

Mon problème est le suivant. J'ai 3 alerts :
1) L'alerte "Retour de Google", qui affiche la bonne latitude
2) L'alert "Fin du while", qui retourne ""
3) L'alert du retour de fonction, qui retourne la bonne latitude.

Si je supprime la ligne "Fin du while", j'obtiens 2 alerts :
1) L'alert "Retour de Google", qui affiche la bonne latitude
2) L'alert du retour de fonction, qui retourne "".

Avez vous une idée d'où vient le problème ?

Pierre