Bonjour � tous,

Pour vous situer le contexte, je suis en train de d�velopper une application web permettant de retracer la route de v�hicules professionnels en utilisant l'API GoogleMap.
J'ai voulu,impl�menter une fonction qui ferait avancer un petit rond rouge (le v�hicule) tout le long de sa route.
J'ai donc choisit d'utiliser la r�cursivit�e (et donc setTimeout), en rappelant une fonction qui dessine un rond rouge � un point donn� dans elle m�me (avec un nouveau point ).

Je vous explique mon probleme : Comme tout cela est en JavaScript j'ai plac� quelques alert afin de pouvoir d�bugguer.... Et ma fonction marche parfaitement avec un alert plac� au d�but de celle ci. Seulement lorsque je le retire (afin que le rond rouge avance tout seul sans faire "ENTRE" � chaque fois) le navigateur (que ce soit IE ou Firefox) explose.

Je me suis d'abord dit que l'interval de temps n'�tait pas assez grande, que la carte n'avait pas le temps de se rafraichir mais m�me avec une intervalle plus grande (et m�me tr�s tr�s grande ) ce la plante toujours.

Voici le code (ne faites pas attention aux commentaires...):

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
 
lancerParcours: function(dirIndex, pointIndex, interval){
        //alert("Début traitement");
        if(!this.fin)
        {
                // Dans le cas ou nous ne traitons pas le premier point
                // on supprime l'ancien cercle
                if(this.first) this.first = false;
                else 
                {
                    this.removeOverlay(this.Polygons[0]);
                    this.Polygons.splice(0,1);
                }                
                // on passe stepMarker a true. (afin de ne pas effectuer de callback)
                if(!this.stepMarker) this.stepMarker = true; 
                // on créé le cercle               
                if(!this.Polygons) this.Polygons = new Array();                
                this.Polygons.push(createCircle(this.Directions[dirIndex].getMarker(pointIndex).getLatLng(), 0.008, 60, 2, 1, "#a00000", 0.9, "#ff0000"));                
                // on l'affiche
                this.addOverlay(this.Polygons[0]);
                // on redefini le zoom                
                this.setZoom(16);
                // on centre la carte sur le cercle
                this.panTo(this.Directions[dirIndex].getMarker(pointIndex).getLatLng());
                // Dans le cas ou il reste des points a traiter dans la direction courante
                if(pointIndex < this.Directions[dirIndex].Waypoint.length-1) pointIndex++;                
                else
                {
                    // Si il n'y a plus de points on change de direction
                    if (dirIndex < this.Directions.length-1)
                    {
                        dirIndex++;
                        pointIndex = 1;                        
                    }
                    else this.fin = true;                   
                }
                // on rappelle la fonction avec une intervalle de "interval" ms
                setTimeout(this.lancerParcours(dirIndex, pointIndex, interval),interval);                
        }
        else alert("La tournée est terminée!");
    },

Voila, donc si quelqu'un aurait une id�e ou une suggestion, je suis preneur ...