Wikiportail
Messages postés3Date d'inscriptionjeudi 23 avril 2009StatutMembreDernière intervention23 avril 2009
-
23 avril 2009 à 16:17
Wikiportail
Messages postés3Date d'inscriptionjeudi 23 avril 2009StatutMembreDernière intervention23 avril 2009
-
23 avril 2009 à 17:51
Salut,
J'ai une variable global Controls contenant 4 éléments :
var Controls = {
draw: new OpenLayers.Control.DrawFeature(vectors,
OpenLayers.Handler.Polygon,{drawFeature: addFeature}),
drag: new OpenLayers.Control.DragFeature(vectors),
modify: new OpenLayers.Control.ModifyFeature(vectors),
select: new OpenLayers.Control.SelectFeature(vectors,
{onSelect : removeFeature
})
};
Dans une fonction js je parcours cette variable pour afficher chaque icône :
function addDrawControl() {
for (var key in Controls){
drawPanel.addControls (Controls[key]);
};
drawPanel.redraw();
};
Le pb, c'est que je veux parcourir plusieurs fois cette liste.
La première fois, ça marche nickel. La deuxième, ça ne marche plus : en effet, la variable key a déjà parcouru tous les éléments de Controls. La fonction considère qu'il n'y a plus d'éléments dans Controls.
Je voudrais savoir comment lui dire de recommencer au début, de reparcourir la liste Controls depuis le début...
Wikiportail
Messages postés3Date d'inscriptionjeudi 23 avril 2009StatutMembreDernière intervention23 avril 2009 23 avril 2009 à 17:51
Oups !
En fait le pb ne vient du fait qu'il ne reparcourt pas Controls : après quelques tests, ça, ça marche.
Le pb vient de addControls. Ils sont sûrement pas supprimer comme il faut avant d'être recréer.
Donc, le pb, c'est pas du javascript, mais la gestion des fonctions d'OpenLayers.
Wikiportail
Messages postés3Date d'inscriptionjeudi 23 avril 2009StatutMembreDernière intervention23 avril 2009 23 avril 2009 à 17:30
Salut,
Euh ... non, le pb n'est pas dans le fait de l'appeler plusieurs fois.
Au 1er passage dans la fonction, il parcourt la liste Controls (sans pb). Lorsque je rappelle cette fonction une seconde fois, il ne parcourt plus cette liste : il garde en mémoire sa position à la fin du 1er passage, c'est-à-dire la fin de la liste. Il ne lit donc plus rien dans Controls la seconde fois, puisqu'il n'y a plus de 'key' dans 'Controls'.
Il faudrait une fonction qui lui dise de recommencer au début, une sorte de reset, pour lui faire "oublier" le fait qu'il est déjà parcouru Controls.