> D?passer la limite des 15000 g?olocalisations par jour sur googlemapGoogle limite l'utilisation des API Google Map ? 15000 g?olocalisation par jour et par IP. Il s'agit de retrouver des coordonn?es g?ographiques (longitude et lattitude) ? partir d'une adresse r?elle.
Cet article a ?t? mis ? jour, consultez plut?t http://www.cylman.com/eviter-le-statut-google-over-query-limit-et-depasser-la-limite-des-2500-geolocalisations-par-jour_qr30.html
Si vous avez une base de donn?e importante ? localiser ou bien un traffic important sur votre site, il vaut mieux retrouver ses coordonn?es g?ographiques pour les stocker dans votre base. De cette mani?re vous n'aurez plus cette limite.
Attention, cette technique est a utiliser ponctuellement et uniquement en cas de mise ? jour de base de donn?e. Si vous ?tes confront?s ? cette limite a cause de votre traffic, il ne faut pas l'utiliser pour passer outre et continuer ? faire de la g?olocalisation en temps r?el. Vous devez absolument mettre ? jour une base des adresses avec longitude et latitude. C'est le seul cas d'utilisation illimit?e de Google Map et vous ne risquez pas que le service soit coup?.
Une fois que vous avez g?olocalis? les 15000 premi?res adresses de votre base, si vous avez un autre serveur ou h?bergement avec une autre ip, proc?dez en deux ?tapes:
Sur le second h?bergement, enregistrez le fichier geocode.php :
<?
function getCoordsFromAdress($rue,$cp,$ville,$pays,$serveur,$APIKey)
{
$_coords=array();
$_url = sprintf('http://%s/maps/geo?&q=%s&output=csv&key=%s',$serveur,rawurlencode("$rue, $cp $ville, $pays"),"$APIKey");
$_result = false;
if($_result = file_get_contents($_url))
{
$_result_parts = explode(',',$_result);
if($_result_parts[0] != 200)
return false;
$coords['lat'] = $_result_parts[2];
$coords['lon'] = $_result_parts[3];
}
return $coords;
}
$APIKey='VOTREAPIKEY';
$coords=getCoordsFromAdress($_REQUEST['rue'],$_REQUEST['cp'],$_REQUEST['ville'],$_REQUEST['pays'],$_REQUEST['serveur'],$APIKey);
if($coords['lat']<>'' && $coords['lon']<>'')
echo $coords['lat'].'|'.$coords['lon'];
else
echo '|';
?>
Puis sur votre serveur, la o? se trouve votre base de donn?e et votre script de g?olocalisation, utilisez la fonction modifi?e :
function getHisCoordsFromAdress($heberge,$rue,$cp,$ville,$pays,$serveur)
{
$_coords=array();
$_coords[0]='';
$_coords[1]='';
$pathUrl=$heberge.'/geocode.php';
$requestString='?rue='.urlencode($rue).'&cp='.urlencode($cp).'&ville='.urlencode($ville).'&pays='.urlencode($pays).'&serveur='.urlencode($serveur).'';
$_result = file_get_contents($pathUrl.$requestString);
$_coords=explode('|',$_result);
$coords['lat'] = $_coords[0];
$coords['lon'] = $_coords[1];
return $coords;
}
$pays='FR';
$serveur='maps.google.com';
$APIKey='VOTREAPIKEY';
// dans votre boucle de requ?te sql :
usleep(100000); // imp?ratif
$coords=getHisCoordsFromAdress('URLDEVOTREDOSSIERQUIHEBERGEGEOCODEPHP', 'VOTREADRESSE','VOTRECP','VOTREVILLE',$pays,$serveur);
Et voila, non seulement c'est reparti pour 15000 gelocalisations, mais ?a marche aussi avec les autres serveurs de g?olocalisation.
retour