a
     
 
       
   Developpeur web    
       
   Php Mysql et divers    
       
   Shitao    
   Sénèque    
   Recettes    
       


> Eviter le statut google OVER_QUERY_LIMIT et dépasser la limite des 2500 géolocalisations par jour

L'utilisation de l'API google pour la géolocalisation d'adresses est limitée à 2500 requêtes par jour. Et pas plus de quelques requêtes par seconde. Si vous utilisez cette API en temps réel sur un site ou si vous faites une boucle pour mettre à jour une table vous verrez rapidement apparaitre le statut OVER_QUERY_LIMIT.

L'enregistrement de vos latitudes et longitudes est donc impératif et fortement conseillé par Google. Mais en cas de mise à jour conséquente (par exemple géolocaliser une table insee de 38000 communes...), vous serez contraints de temporiser vos requêtes de mises à jour et bonjour l'endormissement fatal devant votre script. En plus il faut attendre 24h toutes les 2500 mises à jour.

Il est possible de passer outre cette limitation. Attention, n'utilisez pas cette technique pour continuer à faire de la géolocalisation en temps réel car il suffi de quelques requêtes qui se suivent trop rapidement sur le même site pour être blacklisté. Enregistrez toujours vos adresses géolocalisées dans une table avec longitude et latitude.

Le principe est simple, une fois que vous avez géolocalisé vos 2500 premières adresses sur votre serveur ou votre hébergement, trouvez un autre serveur ou autre hébergement avec une autre IP, c'est lui qui géolocalisera pour les prochaines 2500 adresses.

Sur le serveur distant uploadez le fichier geocode.php suivant :

function getXmlCoordsFromAdress($address)
{
$coords=array();
$base_url="http://maps.googleapis.com/maps/api/geocode/xml?";
// ajouter &region=FR si ambiguité (lieu de la requete pris par défaut)
$request_url = $base_url . "address=" . urlencode($address).'&sensor=false';
$xml = simplexml_load_file($request_url) or die("url not loading");
//print_r($xml);
$coords['lat']=$coords['lon']='';
$coords['status'] = $xml->status ;
if($coords['status']=='OK')
{
 $coords['lat'] = $xml->result->geometry->location->lat ;
 $coords['lon'] = $xml->result->geometry->location->lng ;
}
return $coords;
}
$coords=getXmlCoordsFromAdress($_REQUEST['address']);
echo $coords['status'].'|'.$coords['lat'].'|'.$coords['lon'];

sur votre site principal avec votre table à géolocaliser et votre script de mise à jour utilisez la fonction de géolocalisation suivante :

// avant votre boucle
function getExtXmlCoordsFromAdress($heberge,$address)
{
$coords=array();
$request_url = $heberge.'/geocode.php?' . "address=" . urlencode($address).'';
$_result = file_get_contents($request_url);
$_coords=explode('|',$_result);
$coords['status'] = $_coords[0];
$coords['lat'] = $_coords[1];
$coords['lon'] = $_coords[2];
return $coords;
}

// dans la boucle
usleep(1000000); // impératif
$coords=getExtXmlCoordsFromAdress("http://www.votresecondsite.com","$adresse1, $cp $ville, france");



(Attention, vous recevez une chaine, utilisez floatval si vous avez besoin de faire des calculs)

Vous voilà parti pour 2500 requêtes de plus :-)




retour

  Tags : googlemap


> Obtenir la lattitude et la longitude googlemap d'une adresse en php
> Tutorial googleMap en php, regrouper des marqueurs par catégories
> Autres tutoriels sur googlemap
> Dépasser la limite des 15000 géolocalisations par jour sur googlemap
> Tutorial googleMap en php, liste d'adresse sur une carte
> Géocoder une adresse en php, obtenir sa latitude et sa longitude
Cylman
  Tags : googlemap


> Obtenir la lattitude et la longitude googlemap d'une adresse en php
> Tutorial googleMap en php, regrouper des marqueurs par catégories
> Autres tutoriels sur googlemap
> Dépasser la limite des 15000 géolocalisations par jour sur googlemap
> Tutorial googleMap en php, liste d'adresse sur une carte
> Géocoder une adresse en php, obtenir sa latitude et sa longitude



RSS    |    Mes liens    |    Syndication    |    Plan    |    Sitemap XML    |    Création de site web à Carcassonne