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.. en ligne mais pas en local ! [Google Maps]


Sujet :

APIs Google

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 30
    Points : 17
    Points
    17
    Par défaut OVER_QUERY_LIMIT.. en ligne mais pas en local !
    Bonjour à tous,

    J'ai l'impression que ce problème de "OVER_QUERY_LIMIT" est récurrent et j'ai lu bon nombre de post a ce sujet.
    Seulement il concerne toujours des personnes qui utilise le géocodage en boucle et donc dépassent rapidement la limite de fréquence. Les solutions de temporisation ne me concerne donc pas.

    J'ai un formulaire où le membre indique ville, CP et pays et dans le traitement je fais appel a la fonction de géocodage ci dessous pour enregistrer également dans la BDD le latitude et longitude de l'adresse indiquée...

    J'ai fais quelques essai en local : aucun soucis.
    Je met mes fichiers sur mon ftp OVH pour tester les nouvelles fonctions sur mon telephone et la dès le premier essai : "OVER_QUERY_LIMIT"

    D'où peux venir le problème et quelle serait la solution ?
    Est ce les autres utilisateurs OVH avec IP identiques qui ont dépassé le quotas et qui m'empechent de faire une seule requete ?

    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
    ///////////////////////////////////////////// GEOCODAGE DE L'ADRESSE ////////////////////////////////////////////
    $geo='';  
    $latitude ='';
    $longitude ='';
    function toCoordinates($address) {
    	$address = urldecode($address);
    	$url = "http://maps.googleapis.com/maps/api/geocode/xml?address=".$address."&sensor=true";
    	$xml = simplexml_load_file($url);
    	$response  = (string) $xml->status;
    	$latitude  = (string) $xml->result->geometry->location->lat;
    	$longitude = (string) $xml->result->geometry->location->lng;
    	return array($latitude, $longitude, $response);
    }
     
    $address = $zipcode.'+'.$ville.'+'.$pays;
    $geo = toCoordinates($address);
    $latitude = $geo[0];
    $longitude = $geo[1];
    Merci par avance,
    Florian

  2. #2
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 30
    Points : 17
    Points
    17
    Par défaut
    Toujours pareil depuis, le geocodage n'as pas marché une seule fois en ligne alors que cela fonctionne très bien en local...

  3. #3
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 120
    Points : 44 917
    Points
    44 917
    Par défaut
    Bonjour,
    as tu essayé avec google.maps.Geocoder.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 30
    Points : 17
    Points
    17
    Par défaut
    Non... Comme je suis débutant en JS (j'ai juste lu un cours mais encore jamais vraiment pratiqué), je préfèrerai une solution en php...

    Cela dit je suis pret à m'y mettre si c'est le seul moyen d'arriver a ce que je veux.

    J'ai lu cette aide google a ce sujet :
    https://developers.google.com/maps/d...eocoding?hl=fr

    Mais j'ai du mal a l'appliquer à mon cas.
    En faites je ne vois pas trop comment récupérer les variables php issues de mon formulaire pour les traiter en JS et les ressortir en php pour les insérer dans ma BDD ?

    Edit : Est ce que passer par un fichier XML est une bonne solution ?

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 30
    Points : 17
    Points
    17
    Par défaut
    Edit : Résolu !
    J'ai réussi a le faire en Javascript et cela fonctionne bien

  6. #6
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 120
    Points : 44 917
    Points
    44 917
    Par défaut
    J'ai réussi a le faire en Javascript et cela fonctionne bien
    pourrais tu nous en dire plus, on est friand des solutions pour pouvoir les transmettre au cas où cela se reproduise pour un autre

  7. #7
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 30
    Points : 17
    Points
    17
    Par défaut
    Biensur, voici le code qui s'occupe de récupérer les coordonnées d'une part :

    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
    // définition des variables 
     
    var geocoder = new google.maps.Geocoder();
    var addr, latitude, longitude;
     
    // Fonction chargée de géolocaliser l'adresse
     
    function geolocalise(){
     
    // utilisation des données reçu du formulaire pour créer l'adresse
      addr = '<?php echo $ville;?>' + '<?php echo $zipcode;?>' + '<?php echo $pays;?>'; 
     
    // Tentative de géocodage 
       geocoder.geocode( { 'address': addr}, function(results, status) { 
    // Si géolocalisation réussie : 
       if (status == google.maps.GeocoderStatus.OK) {
     
    // Récupération des coordonnées
        latitude = results[0].geometry.location.lat();
        longitude = results[0].geometry.location.lng();
     
    // Appel AJAX pour insertion en BDD 
        var sendAjax = $.ajax({
         type: "POST",
         url: 'latlng_to_bdd.php?hash='+'<?php echo $hash ?>',
         data: 'lat='+latitude+'&lng='+longitude+'&adr='+addr,
         success: handleResponse
        });
       }
       function handleResponse(){
        $('#answer').get(0).innerHTML = sendAjax.responseText;
       }
      });
     }
     
    geolocalise();
    et d'autre par le fichier latlng_to_bdd.php qui les insères dans ma bdd :

    Code php : 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
    <?php
     
    header('Content-type: text/html; charset=ISO-8859-1');
     
    // Récupération des données lat et lng 
     if(isset($_POST['lat']) && isset($_POST['lng'])){
      $lat = addslashes($_POST['lat']);
      $lng = addslashes($_POST['lng']);
      $adr = addslashes($_POST['adr']);
      $hash = addslashes($_GET['hash']);
     
    // Connection à la Base de donnée
    include_once "connection_sql.php";
     
    // Insertion des données dans la BDD  
      $req = $bdd -> prepare('UPDATE membres SET lat=:lat, lng=:lng WHERE hash =:hash');
      $req -> execute(array(
    			 	'hash'=> $hash,
    				'lat' => $lat,
    	  			'lng' => $lng ));
     $req->closeCursor();
     } else
       echo 'Problème rencontré dans les valeurs passées en paramètres';
     
    ?>

    Et a ne pas oublier, dans les balises <head> :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>

    Toutes les suggestions sont les bienvenues...
    En tout cas, ca fonctionne

  8. #8
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 120
    Points : 44 917
    Points
    44 917
    Par défaut
    Si je comprends bien
    - saisie du formulaire
    - envoi des données au serveur
    - retour d'une page contenant la fonction de geodécodage
    - requête de décodage via un google.maps.Geocoder
    - au retour envoi des données au serveur via Ajax

    pourquoi ne pas faire simplement
    - saisie du formulaire
    - envoi des données au serveur
    - retour d'une page contenant la fonction de geodécodage
    - requête de décodage via un google.maps.Geocoder
    - au retour envoi des données au serveur via Ajax

  9. #9
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 30
    Points : 17
    Points
    17
    Par défaut
    Hummm oui et non. En faites :

    Les variables qui composent l'adresse ne sont pas issue de la BDD mais extraite de $_POST puisque le script est sur la page de traitement appelé par le formulaire.

    Il n'y a donc pas de requête a la BDD pour récupérer les informations qui permettent le géocodage, mais c'est vrai qu'il y a effectivement 2 requetes différentes pour insérer les données... (une dans la page de traitement du formulaire et une dans "latlng_to_bdd")

    C'est vrai que ces deux la pourrait surement être regroupé en une seule !
    Je vais voir ca... merci

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

Discussions similaires

  1. Liens firefox marchent en ligne mais pas en local
    Par poliut dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 03/01/2013, 16h00
  2. Regexp qui marche en ligne mais pas en local
    Par akrogames dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 27/04/2010, 16h30
  3. .htaccess qui fonctionne en ligne mais pas en local
    Par Prosis dans le forum Apache
    Réponses: 3
    Dernier message: 28/09/2009, 10h28
  4. [JpGraph] erreur 404 en ligne mais pas en local
    Par Lert Sarin dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 24/07/2009, 10h45
  5. Réponses: 2
    Dernier message: 13/06/2008, 20h01

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