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 :

Geocode renvoie OVER_QUERY_LIMIT [Google Maps]


Sujet :

APIs Google

  1. #1
    Membre éclairé
    Avatar de maxusn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2012
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 174
    Points : 661
    Points
    661
    Par défaut Geocode renvoie OVER_QUERY_LIMIT
    Bonjour,

    je développe une application avec sencha touch, j'utilise une map pour afficher des éléments pensent dans ma base de données.

    problème : la fonction de google permettant de récupérer les coordonnées avec une adresse me renvois une erreur OVER_QUERY_LIMIT.

    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    	AfficheClie: function()
    	{
    		var map = Ext.getCmp('myMap').getMap();
    		var view = this;
    		// Set up a model to use in our Store
    		Ext.define('Client', 
    		{
    			extend: 'Ext.data.Model',
    			config: 
    			{
    				fields: 
    				[
    					{name: 'libelle', type: 'string'},
    					{name: 'Adresse1', type: 'string'},
    					{name: 'Adresse2', type: 'string'},
    					{name: 'Adresse3', type: 'string'},
    					{name: 'Codepostal', type: 'string'},
    					{name: 'Ville', type: 'string'}, 	
    				]
    			}
    		});
     
    		var DataStore = new Ext.data.Store(
    		{
    			model: 'Client', 
    			fields: ['libelle', 'Adresse1', 'Adresse2', 'Adresse3', 'Codepostal', 'Ville'],
    			proxy: 
    			{
    				type: 'rest',
    				url: 'serv/ConnectBase.php',
    				actionMethods: 
    				{
    					read: 'POST'
    				},
     
    				reader: 
    				{
    					type: 'json',
    					root: 'result',
    				}
     
    			},
    				//autosave: false,
    			autoload: true,
     
    		});
    		DataStore.load(
    		{
    			callback: function (records, operation, success)
    			{
    				for (var i =0;i<records.length;i++)
    				{
    					if (records[i].data.Adresse1 != '' || records[i].data.Adresse2 != '' || records[i].data.Adresse3 != '' || records[i].data.Codepostal != '' || records[i].data.Ville != '')
    					{
    						var adresse = records[i].data.Adresse1 +' '+ records[i].data.Adresse2 +' '+records[i].data.Adresse3 + ' ' + records[i].data.Codepostal + ' ' + records[i].data.Ville;
    						view.codeAddress(map,adresse,records[i].data.libelle)
    					}
    				}
    				this.tabMarkers = new Array();
     
    			},
    			scope: this
    		});
     
    	},
    ma fonction récupère les éléments dans la base de données et appel ensuite la fonction permettant de geocoder :

    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    codeAddress :function (map,address,libelle) 
    	{		
     
    		var view = this;
     
    		var geocoder = new google.maps.Geocoder();
     
    		geocoder.geocode( { 'address': address}, function( data, status) {
     
    			switch(status)
    			{
    				case google.maps.GeocoderStatus.OK:
    				{
    					var pos = data[0].geometry.location;
     
    					for(var i=0;i<view.tabMarkers.length;i++)
    					{
    						if(view.tabMarkers[i].position.Ya.toFixed(3) == pos.Ya.toFixed(3) && view.tabMarkers[i].position.Za.toFixed(3) == pos.Za.toFixed(3) && view.tabMarkers[i].title != "origine")
    						{
    							return true;
    						}
    					}			
     
    					var distanceKm = google.maps.geometry.spherical.computeDistanceBetween(view.origine.position, pos);
    					distanceKm = distanceKm/1000;
     
     
    					if(distanceKm < view.proximite)
    						var icon = new google.maps.MarkerImage("http://maps.google.com/mapfiles/ms/micons/green.png");
    					else
    						var icon = new google.maps.MarkerImage("http://maps.google.com/mapfiles/ms/micons/red.png");
     
     
    					var infowindow = new google.maps.InfoWindow(
    					{
    						content: libelle + " : " + distanceKm.toFixed(2)+ ' km'
    					});
     
    					var marker = new google.maps.Marker(
    					{
    						map : map,
    						position : pos,
    						icon: icon,
    						title: libelle
    					});
     
    					view.tabMarkers.push(marker);						
     
    					google.maps.event.addListener(marker, 'click', function() 
    					{
    						if(view.direction != null)
    							view.direction.setMap(null);	
     
    						infowindow.open(map, marker);		
    						view.itineraire(marker);
    					});
    					break;
    				}
     
    				case google.maps.GeocoderStatus.ZERO_RESULTS:
    				{
    					Ext.Msg.alert("Erreur adresse", "Aucune adresse n'a ete trouvée pour : "+libelle);
    					break;
    				}
     
    				case google.maps.GeocoderStatus.OVER_QUERY_LIMIT:
    				{
    					Ext.Msg.alert("Erreur requete limitee", "Trop de requete ont ete envoyees");
    					break;
    				}
     
    				case google.maps.GeocoderStatus.REQUEST_DENIED:
    				{
    					Ext.Msg.alert("Erreur requete annulee", "votre requete a ete annulee");
    					break;
    				}
     
    				case google.maps.GeocoderStatus.INVALID_REQUEST:
    				{
    					Ext.Msg.alert("Erreur requete invalide", "votre requete pour " + libelle + " n'est pas valide");
    					break;
    				}
     
    				default:
    				{
    					Ext.Msg.alert("Erreur !","Une erreur inconnue est survenue");	
    					break;
    				}
    			}		
    	  });
     
     
    	},
    Il me semle avoir vus qu'il fallait synchroniser ses requêtes géocode pour ne les envoyer qu'une par une, mais je ne voit pas comment faire.

    ps: ce code n'est pas du tout optimiser, ce n'est qu'un "premier jet".

    merci d'avance

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 144
    Points : 44 954
    Points
    44 954
    Par défaut
    Bonjour,
    dans ton retour en erreur OVER_QUERY_LIMIT, il te faut relancer la requête, ce problème a déjà été traité sur ce forum.

    A voir
    OVER_QUERY_LIMIT pour les itinéraires
    ou encore
    récupérer une adresse avec reverse geocode #10

  3. #3
    Membre éclairé
    Avatar de maxusn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2012
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 174
    Points : 661
    Points
    661
    Par défaut
    Ca marche, merci NoSmoking.

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

Discussions similaires

  1. Jointure qui ne renvoie pas tous les enregistrements
    Par rayonx dans le forum Langage SQL
    Réponses: 12
    Dernier message: 19/07/2024, 10h33
  2. Problème requête qui renvoie plusieurs
    Par dai.kaioh dans le forum Langage SQL
    Réponses: 6
    Dernier message: 01/04/2004, 11h07
  3. [VB6] Comment faire une fonction qui renvoie 2 résultats
    Par tazarine dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 15/01/2004, 01h13
  4. Réponses: 5
    Dernier message: 11/12/2003, 15h45
  5. Procédure stocké:Insert et renvoie de la clé primair
    Par caramel dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 17/04/2003, 10h34

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