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


> Tutorial googleMap en php, liste d'adresse sur une carte
> 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
> G?ocoder une adresse en php, obtenir sa latitude et sa longitude
Cylman
  Tags : googlemap


> Tutorial googleMap en php, liste d'adresse sur une carte
> 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
> 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