Pause javascript

Fermé
coachedwin - 18 juil. 2012 à 23:15
 Utilisateur anonyme - 19 juil. 2012 à 10:01
Bonjour,

je vous écris ce soir pour vous demander de l'aide dans mon développement de site web ou un avion doit suivre une polyline sur google map api v3

voici mon code:
var Lyon=new google.maps.LatLng(45.65, 4.832153);
var Turom=new google.maps.LatLng(46.8507,5.95187);
var Danar=new google.maps.LatLng(48.0718,6.0376699999999);
var Strasbourg=new google.maps.LatLng(48.5,7.754516);
var traceParcours;
var parcoursAvion=new Array();
var no_balise;
var bal_prec;
var bal_suiv;
var vitesse=40;// km/h
var temps;
var patienter=500;// ms
var t_parcouru;	

//Fonction qui initialise la map non écrite

function agir(){
		
		
		var lat;
		var lon;
 			lat1 = bal_prec.lat();
			lng1 = bal_prec.lng();
			lat2 = bal_suiv.lat();
		  	lng2 = bal_suiv.lng();		 			
			
			lat=lat1+t_parcouru/temps*(lat2-lat1);
			lon=lng1+t_parcouru/temps*(lng2-lng1);
			
			var positionGPS=new google.maps.LatLng(lat,lon);
			avion.setPosition(positionGPS);
			
		}
	



function animate(){	
no_balise=0;
	while (no_balise<parcoursAvion.length-1){

	//Recuperation de la distance			


		/* Traitement des données  par rapport au séparateur, ici la virgule */
			bal_prec=parcoursAvion[no_balise];
			bal_suiv=parcoursAvion[no_balise+1];
			
				var distance=0;
				var lat1 = bal_prec.lat();
			   var lng1 = bal_prec.lng();
			   var lat2 = bal_suiv.lat();
			   var lng2 = bal_suiv.lng();
				var dLat = (lat2-lat1) * Math.PI / 180;
    			var dLon = (lng2-lng1) * Math.PI / 180;
   			var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
   			   Math.cos(lat1 * Math.PI / 180 ) * Math.cos(lat2 * Math.PI / 180 ) *
   			   Math.sin(dLon/2) * Math.sin(dLon/2);
 			   var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
 			   var R = 6371; // km
 			   distance = R * c;
   
		alert('distance:'+distance);

		temps=Math.floor(distance/vitesse);

		for(t_parcouru=0;t_parcouru<=temps;t_parcouru++){
			setTimeout('agir()',1000);
			no_balise++;
		}
	}
}
	
}


je voudrais en fait faire une pause d'une seconde à chaque fois que je redessine mon marqueur avion d'où le setTimeout
mais quand je lance animate, mon avion ne fait pas ce qu'il doit, pouvez-vous m'aider?
merci

1 réponse

Utilisateur anonyme
19 juil. 2012 à 10:01
Teste en mettant ton "setTimeout('agir()',1000);" après ton "no_balise++;", sinon l'incrémentation ne se fera pas.

Et puis mets ta variable "no_balise=0;" avec les autres tout en haut car à chaque fois que tu lances la fonction animate(), "no_balise vaut 0.

Et est-ce normal que tu n'ai pas de "return" dans ta "fonction agir()" ?
0