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 :

OVER_QUERY_LIMIT pour les itinéraires [Google Maps]


Sujet :

APIs Google

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Inscrit en
    Avril 2011
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 70
    Points : 44
    Points
    44
    Par défaut OVER_QUERY_LIMIT pour les itinéraires
    Bonjour,

    Tout est dit dans le titre : j'ai cette erreur au bout de 10 requêtes et je n'arrive pas à la contrer. J'ai surfé un bon moment et j'ai vu qu'avec une pause c'était possible, mais je n'y arrive pas.

    Voici mon code sans la pause :

    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
    42
     
    for(var i=0 ; i < tableau.length ; i++){
    	// ...
    	addMarker(tableau[i]);
    	// ...
    }
     
    function addMarker(tableau){
    	// ...
    	var coords = new g.LatLng(tableau[8], tableau[9]);
    	var marker = new google.maps.Marker({
    		position: coords,
    		map: map
    	});
    	// ...
    	if(markersEtablis.length > 0){
    		directionsService = new g.DirectionsService();
    		directionsService.route({
    			origin: coords,
    			destination: markersEtablis[0].getPosition(),
    			provideRouteAlternatives: true,
    			unitSystem: g.DirectionsUnitSystem.METRIC,
    			travelMode: g.DirectionsTravelMode.DRIVING
    		}, function(result, status){
    			if (status == g.DirectionsStatus.OK){
    				cptTabMarker++;
    				var directionsDisplay = new g.DirectionsRenderer();
    				var options = {suppressMarkers: true};
    				directionsDisplay.setOptions(options);
    				directionsDisplay.setDirections(result);
    				directions.push(directionsDisplay);
    				// ...
    				}
    				else {
    					console.log('Le calcul d\'itinéraire a échoué pour ' + status);
    				}
    			});
    		}
    	}
    	markers.push(marker);
    	marker.setMap(map);
    }
    Voilà je vous ai mis la partie importante de mon code. Si vous pouviez m'aider, ce serait avec plaisir

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 990
    Points : 44 188
    Points
    44 188
    Par défaut
    Bonjour,
    J'ai surfé un bon moment et j'ai vu qu'avec une pause c'était possible, mais je n'y arrive pas.
    il te fallait prendre la bonne vague
    http://www.developpez.net/forums/d10...e/#post5964793

  3. #3
    Membre du Club
    Inscrit en
    Avril 2011
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 70
    Points : 44
    Points
    44
    Par défaut
    Merci,

    Effectivement, la mienne était pourri de vague. Celle que tu m'a dit de prendre était parfaite !

    Du coup, j'ai créé une fonction qui contient juste mon directionsService et suivi les mêmes instructions que tu as donné :

    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
     
    function  afficherTabDistancier(coords, tableau) {
    	directionsService = new g.DirectionsService();
    	directionsService.route({
    		origin: coords,
    		destination: markersEtablis[0].getPosition(),
    		provideRouteAlternatives: true,
    		unitSystem: g.DirectionsUnitSystem.METRIC,
    		travelMode: g.DirectionsTravelMode.DRIVING
    	}, function(result, status){
    		if (status == g.DirectionsStatus.OK){
    			cptTabMarker++;
    			var directionsDisplay = new g.DirectionsRenderer();
    			var options = {suppressMarkers: true};
    			directionsDisplay.setOptions(options);
    			directionsDisplay.setDirections(result);
    			directions.push(directionsDisplay);
    			// ...
    			}
    			else {
    			// on traite l'erreur OVER_QUERY_LIMIT
    			if( status == google.maps.GeocoderStatus.OVER_QUERY_LIMIT){
    				// relance la requete
    				setTimeout( function(){
    					afficherTabDistancier(coords, tableau); // rappel de la même fonction avec les même paramètres
    				}, 200);
    			}
    			else{
    				// affichage erreur
    				console.log('Le calcul d\'itinéraire a échoué pour ' + tableau[1]);
    				console.log(status);
    			}
    		});
    	}
    }
    Par contre, c'est lent... Il n'y a pas un autre moyen plus rapide ? (c'est fonctionnel, je ne me plains pas, c'est juste que je me sens obligé de poser la question... )

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 990
    Points : 44 188
    Points
    44 188
    Par défaut
    d'où sont extrait les données des marqueurs?

    - Si il s'agit d'un click sur la map cette soluce est jouable
    - Si ce sont toujours les mêmes valeurs, mets tout cela en BdD ou en dur dans un fichier

    ...
    Tiens je reprend presque ce que j'ai mis dans la discussion en référence
    Citation Envoyé par NoSmoking Voir le message
    si l'on considère 100 requêtes limitées à 5 requêtes par seconde il te faut, sans erreur OVER_QUERY_LIMIT, déjà 20s c'est déjà looooooong, alors avec le temps de latence cela devient interminable, enfin pour moi.

    La question qui se pose est de savoir si tu es obligé d'attendre d'avoir tous tes points définis pour faire la demande?

    - Si les points sont saisis, voir cliqués au fil de l'eau, autant faire l'appel une fois pris connaissance de celui ci.
    - Si les points sont dans un fichier chargé autant mettre les adresses préalablement récupérées.

  5. #5
    Membre du Club
    Inscrit en
    Avril 2011
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 70
    Points : 44
    Points
    44
    Par défaut
    Bonjour,

    Désolé de ne répondre que maintenant.

    Je récupère les latitudes et longitudes en BdD, les enregistre dans mon tableau "tableau" et réalise la fonction ci-dessus.

  6. #6
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 990
    Points : 44 188
    Points
    44 188
    Par défaut
    Je récupère les latitudes et longitudes en BdD...
    dans ce cas pourquoi donc ne pas mettre les infos utiles dans la BdD également ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. FormatFloat pour les entiers !?
    Par Lung dans le forum Langage
    Réponses: 5
    Dernier message: 10/04/2003, 15h20
  2. [Kylix] cherche composants pour les sockets
    Par coriolis dans le forum EDI
    Réponses: 1
    Dernier message: 09/04/2003, 10h18
  3. Probleme pour les insertion au format etranger
    Par Sandrine75 dans le forum XMLRAD
    Réponses: 5
    Dernier message: 19/03/2003, 10h55
  4. Réponses: 2
    Dernier message: 08/10/2002, 18h26
  5. Une petite aide pour les API ?
    Par Yop dans le forum Windows
    Réponses: 2
    Dernier message: 04/04/2002, 21h45

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