Bonjour,
J'ai un pb de passage et récupération de mon objet.
la variable "photos" est un tableau.
je ne connais pas le nombre d'élément du tableau tant que je n'ai pas récupéré les champs du fichier xml, ce qui est fait dans la fonction "recup_fichier_photo", (je déclare chaque élément du tableau comme un objet de type "Photo" dans la fonction).
Comment faire pour récupérer les objets créés dans la fonction ?
script éxécutable à l'adresse :
www.observatoiredeleau.fr/Essai/essai.htm
code ci-dessous.
Merci d'avance
Philou
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Fiche descriptive</title>
<script type="text/javascript">
//constructeur de la classe photos
function Photo(plat,plong) {
this.lat = plat;
this.long = plong;}
var photos = new Array ();
function recup_fichier_photo(fichier,photos) {
// Récupération des données stations (lattitude, longitude) à partir du fichier xml
var request = GXmlHttp.create();
request.open("GET",fichier, true);
request.onreadystatechange = function() {
// si les data ont été chargées, le readystate passe à 4
if (request.readyState == 4) {
var xmlDoc = request.responseXML;
var markers = xmlDoc.documentElement.getElementsByTagName("marker");
for (k = 0; k < markers.length; k++) {
photos[k] = new Photo();
photos[k].lat = parseFloat(markers[k].getAttribute("lat"));
photos[k].long = parseFloat(markers[k].getAttribute("long"));
}}}
request.send(null);
return photos;}
</script>
<script src="http://maps.google.com/maps?file=api&v=2&key=ABQIAAAAyR-IKou_PgJHyL0q9fVNLxTgVOmF-uHHogn7BifuCrL_l0gHXRSZYwWhLi6hIzHeHQshYghIzJI8nA"
type="text/javascript">
</script>
</head>
J'ai résolu mon problème de synchronisation en insérant dans la fonction recup_fichier_photo une fonction effectuant mon traitement (définition dynamique du contenu de mes sélecteurs à partir des tableaux initialisés avec les données du fichier xml).
Sinon le traitement asynchrone, provoquait l'obtention de valeur "undefined".