Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 2563 → Rev 2564

/trunk/jrest/bibliotheque/RechercheInfosZoneGeo.php
73,17 → 73,27
}
public function obtenirInfosPourNoms($nom, $pays, $code) {
$nom = trim($nom);
$pays = trim($pays);
$code = trim($code);
$retour = false;
// Dans le cas de la france on possède directement une table
// avec les centroïdes des communes
if($pays == 'FR' || $code != "*") {
if($pays == 'FR' || $code != "") {
$retour = $this->chercherCentroideCommuneBdd($nom, $code);
} else {
// Sinon méthode habituelle, un test simple suivi d'un test plus complexe
$retour = $this->chercherCentroideCommuneBdd($nom, $code);
if(!$retour) {
$retour = $this->effectuerRequeteGeocodingMondiale($nom);
// On cherche donc d'abord en France
if($pays == "") {
$retour = $this->chercherCentroideCommuneBdd($nom, $code);
}
// Si on ne trouve rien on teste dans le monde entier
if($retour == false) {
$retour = $this->effectuerRequeteGeocodingMondiale($nom, '2,3,4,5,6,7,8', 1, $pays);
}
}
return $retour;
192,8 → 202,10
return $retour;
}
private function effectuerRequeteGeocodingMondiale($nom, $niveau = '2,3,4,5,6,7,8', $limite = 1) {
$url = $this->config['cel']['url_service_geo_mondial'].'?masque='.urlencode($nom).'&niveau='.$niveau.'&limite='.$limite;
private function effectuerRequeteGeocodingMondiale($nom, $niveau = '2,3,4,5,6,7,8', $limite = 1, $pays = null) {
$url_sans_pays = $this->config['cel']['url_service_geo_mondial'].'?masque='.urlencode($nom).'&niveau='.$niveau.'&limite='.$limite;
$url = $url_sans_pays.(!empty($pays) ? '&pays='.urlencode($pays) : '');
 
$res = @json_decode(file_get_contents($url), true);
 
$retour = array();
211,6 → 223,14
$retour[] = $this->formaterLigneResultat($param);
}
}
} else if($limite == 1) {
// Dans le cas où un pays a été demandé mais pas de résultat, on rentente la recherche sans
// préciser de pays
$res = @json_decode(file_get_contents($url_sans_pays), true);
if(!empty($res)) {
$retour = $this->traiterLigneResultatRequeteGeocodingMondiale($res);
}
}
return $retour;