Commentçamarche.net
CodeS-SourceS
Rechercher un code, un tuto, une réponse

Utilisation du web service de map24 pour la correction d'adresse

4/5 (9 avis)

Vue 7 310 fois - Téléchargée 268 fois

Description

Permet d'utiliser le web service de Map24 pour corriger des adresse (utilse pour avoir des base de données saines, et de vérifier les adresses passer dans un formulaire par exemple)

Source / Exemple :


/**

  • Classe qui gère les adresses
  • @author Ryo Sensei
  • /
class Adresse { var $Street; var $Zip; var $City; var $Country; var $Result; var $conf; var $header; var $geocoder; function Adresse(){ include_once(PATH."/conf.php"); include_once(PATH."/Map24Geocoder/Map24Geocoder.php5"); $this->header = new RequestHeader(); $this->header->Map24ID = $CONF['MAP24_ID']; $this->header->ClientID = $CONF['SESSION_ID']; $this->geocoder = new Map24Geocoder($CONF['MAPTP_SYSTEM'],$CONF['MAP24_ID'],$CONF['SESSION_ID']); } /**
  • Fixe l'adresse
*
  • @param string $street rue + numéro
  • @param string $zip zipcode
  • @param string $city ville
  • @param string $country Pays (FR,NL,BE...)
  • @return Adresse
  • /
function setAddress($street="",$zip="",$city="",$country=""){ try{ if($street=="")throw new Exception("La rue ne doit pas être vide<br>"); if($zip==""&&$city="")throw new Exception("Veuillez renmplir au moins le code postal ou la ville<br>"); if($country=="")throw new Exception("Le pays est obligatoire<br>"); $this->Street = $street; $this->Zip = $zip; $this->City = $city; $this->Country = $country; }catch(Exception $e){ echo $e->getMessage();flush(); } } /**
  • Configuration
  • @deprecated
  • @param unknown_type $var nom de la variable
  • @param unknown_type $val valeur
  • /
function config($var,$val){ $this->conf[$var] = $val; } /**
  • Interroge le serveur et effectue la recherche de l'adresse
*
  • /
function search(){ try{ //if(!isset($this->conf[PATH]))throw new Exception("Veuillez configurer le chemin vers les classes"); //$PATH = (isset($PATH)) //$PATH = $this->conf[PATH]; $SynchronizeClient = FALSE; $request = new GeocodeAddressesRequest(); $request->Addresses = array(); $request->Addresses[0]= new Address(); $request->Addresses[0]->Street= $this->Street; $request->Addresses[0]->ZIP=$this->Zip; $request->Addresses[0]->City=$this->City; $request->Addresses[0]->Country=$this->Country; $request->MaxNoOfAlternatives = 1; $request->SynchronizeClient = $SynchronizeClient; $response = $this->geocoder->GeocodeAddresses($this->header,$request); if(isset($response->GeocodedAddresses) && count($response->GeocodedAddresses) > 0){ for($objIdx=0;$objIdx<count($response->GeocodedAddresses);$objIdx++){ $result = new Result($response->GeocodedAddresses[$objIdx]->Alternatives[0]); $counter++; } }else{ $result = null; } $this->Result = $result; }catch(Exception $e){ echo $e->getMessage();flush(); } } function toString(){ print_r($this->Result); } function getQuality(){ return $this->Result->Quality; } } /**
  • Classe de Résultat
*
  • /
class Result{ var $HouseNo; var $Street; var $ZIP; var $City; var $County; var $State; var $Country; var $Quality; /**
  • Constructeur
*
  • @param unknown_type $obj
  • /
function result($obj){ foreach($this as $var=>$null){ $this->$var = $obj->$var; } } /**
  • Retourne le niveau de qualité du résultat
*
  • @return string niveau de qualité
  • /
function getQuality(){ return $this->Quality; } } /**
  • Exemple d'utilisation
  • /
// Chemin vers les librairies Map24 define("PATH","includes"); $adresse = new Adresse(); $adresse->setAddress("20 r. du pres","55000","","fr"); $adresse->config(PATH,"includes"); $adresse->search(); // Acces au résultat if($adresse->getQuality()=="Exact"){ $Street = $adresse->Result->Street; $House = $adresse->Result->HouseNo; $zipcode = $adresse->Result->Zip;//etc.... }

Conclusion :


Necessite une inscription (gratuite) chez Map24.fr et de télécharger les classes. (dans l'exemple, dans un dossier includes/Map24Geocoder/)

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.