IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

APIs Google Discussion :

Asynchrone vers synchrone


Sujet :

APIs Google

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2005
    Messages : 46
    Par défaut Asynchrone vers synchrone
    Bonjour à tous,

    je coince sur une fonction asynchrone fournit par google maps.

    J'ai créé une fonction qui retourne le nombre de KM entre 2 adresses :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    GetKm(depart, destination)
    {
      // code ASYNCHRONE fourni par google maps
    
    return km; // retourne le nombre de km
    }
    et à l'intérieur de cette fonction j'ai du code google maps qui est exécuté en asynchrone...

    Le soucis est que lorsque je fais :

    var km = GetKm(depart, destination);
    alert(km);


    Je n'ai pas le km vu qu'il n'est pas exécuté directement...

    Avez-vous une astuce pour modifier ma fonction GetKm de manière SYNCHRONE ?

    merci

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 211
    Par défaut
    Bonjour,
    Avez-vous une astuce pour modifier ma fonction GetKm de manière SYNCHRONE ?
    si tu fais appel à la fonction de l'API GoogleMap tu devras te contenter du mode asynchrone, mais cela ne doit pas être un problème, il te suffit de traiter le résultat sur le success de la fonction callback.

    Pour le principe Un classique AJAX : utiliser les données au bon moment !

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2005
    Messages : 46
    Par défaut
    Bonjour,

    merci pour cette réponse.

    Voici le code de la fonction :
    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
    function GetKm(from,to)
    {
    	var request = {
    		origin:from,
    		destination:to,
    		travelMode: google.maps.DirectionsTravelMode.DRIVING
    	};
     
    	directionsService.route(request, function(response, status) {
    		if (status == google.maps.DirectionsStatus.OK) {
    			directions.setDirections(response);
    			var myroute = directions.directions.routes[0];
    			// KM
    	var km = ''; 
            km = (myroute.legs[0].distance.value)/1000;
            return km;
    		}
    	});
     
     
    	if(infowindow) { infowindow.close(); }
    }
    le soucis est qu'après l'appel de cette fonction, il y a encore beaucoup de code à faire... parfois la fonction GetKm est appelé plusieurs fois dans une fonction pour avoir le nombre de km entre 2 points.

    Par exemple pour tester si une réservation peut-être validé pour pas, il faut tester plusieurs trajet différents...

    Mettre TOUT le code dans cette fonction serait catastrophique...

    Y-a-t-il moyen de ruser d'une autre façon ?

  4. #4
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 211
    Par défaut
    le soucis est qu'après l'appel de cette fonction, il y a encore beaucoup de code à faire.
    rien ne t'empêche d'appeler une fonction en passant le résultat en paramètre.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    directionsService.route(request, function (response, status) {
      if (status == google.maps.DirectionsStatus.OK) {
        directions.setDirections(response);
        var myroute = directions.directions.routes[0];
        // KM
        var km = (myroute.legs[0].distance.value) / 1000;
        fctUpadte( km);
      }
    });
    il faut tester plusieurs trajet différents...
    dans ce cas regarde plutôt du coté de la google.maps.DistanceMatrixService class.

Discussions similaires

  1. Réponses: 7
    Dernier message: 16/04/2008, 16h42
  2. Réponses: 3
    Dernier message: 14/01/2008, 11h21
  3. Replication synchrone/asynchrone avec Oracle 8i
    Par Fraise des Bois dans le forum Oracle
    Réponses: 1
    Dernier message: 11/01/2006, 21h24
  4. Appel Asynchrone/Synchrone
    Par Dry dans le forum CORBA
    Réponses: 3
    Dernier message: 26/04/2005, 20h43
  5. Réponses: 6
    Dernier message: 25/03/2002, 21h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo