Comment calculer une distance Google Map avec du PHP

Vous êtes ici : Accueil » Blog » Comment calculer une distance Google Map avec du PHP
Comment calculer une distance Google Map avec du PHP
  • 5.00 / 5 5
1 vote, 5.00 avg. rating (97% score)

Comment calculer une distance Google Map avec du PHP

Dans ce tuto, nous allons voir comment calculer une distance Google Map grace à PHP.

 

Comment calculer une distance en PHP ?

La question revient souvent, cela peut s'avérer nécessaire lorsque l'on souhaite intégrer à son site un système pour calculer une distance d'un point A à un point B.

Il existe bien sûr la solution Google Map que beaucoup connaissent qui permet de rentrer un itinéraire et une destination. Ensuite Google va calculer le nombre de kilomètres.

Bien sûr, si l'on intègre ce Google Map en Iframe, ce ne serait pas terrible, on est d'accord 🙂

C'est pourquoi, je souhaite vous faire partager mon script "un plus poussé" avec des fonctionnalités en plus.

 

Que permet ce script ?

Ce script est paramétrable, il permet de :

  • Définir un prix au KM
  • Choisir le nombre de personnes à transporter (le prix sera multiplié par X personnes)
  • Choisir allé simple ou allé retour
  • Choisir le lieu de départ
  • Choisir le lieu d’arrivée

 

Intégration du code PHP

Vous remarquerez que ce script est en brut, c'est à dire que je n'ai pas intégré de CSS. A vous de faire votre design 🙂

Il est conseillé d'appeler ce script en include afin d'optimiser votre code.

<h1>Calculer une distance</h1>
<form name="form1" method="post" action="">
<p>Prix au KM : <input type="text" name="pkm" id="pkm"> EUROS</p>
Nbr de personnes :
<select name="nbr" id="nbr">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select>
<p>Alle simple : <input name="type" type="radio" id="radio" value="a" checked="checked" /></p>
<p>Alle et retour : <input type="radio" name="type" id="radio2" value="ar" /></p>
<p>Lieu de depart : <input type="text" name="dep" id="dep"></p>
<p>Lieu d'arrive : <input type="text" name="ari" id="ari"></p>
<input type="submit" name="calculer" id="calculer" value="Calculer le trajet et le prix">
</form>
<?php
//on créé la fonction
function calculer_distance($adresse1,$adresse2) {
$adresse1 = str_replace(" ", "+", $adresse1); //adresse de départ
$adresse2 = str_replace(" ", "+", $adresse2); //adresse d'arrivée
$url = 'http://maps.google.com/maps/api/directions/xml?language=fr&origin='.$adresse1.'&destination='.$adresse2.'&sensor=false'; //on créé l'url

//on lance une requete aupres de google map avec l'url créée
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
$xml = curl_exec($ch);

//on réccupère les infos
$charger_googlemap = simplexml_load_string($xml);
$distance = $charger_googlemap->route->leg->distance->value;

//si l'info est récupérée, on calcule la distance
if ($charger_googlemap->status == "OK") {
$distance = $distance/1000;
$distance = number_format($distance, 2, ',', ' ');

return $distance;
}
else {
//si l'info n'est pas récupérée, on lui attribu 0
return "0";
}
}
//si le bouton calculer est lancé, on récupère les informations du formulaire et on lance la fonction
if (isset($_POST['calculer'])) {
$dep = $_POST['dep'];
$ari = $_POST['ari'];
$nbr = $_POST['nbr'];
$pkm = $_POST['pkm'];
$prix = $pkm*calculer_distance($dep,$ari);
$type = $_POST['type'];

if ($type == 'a') {
$prix = $prix*$nbr;	
}
elseif ($type == 'ar') {
$prix = $prix*$nbr;
$prix = $prix+$prix;
}
echo '<p>' . $dep . ' -> ' . $ari . '<b> ' . calculer_distance($dep,$ari) . ' KM</b></p>';
echo '<p><b>PRIX : ' . $prix . ' EUROS</b></p>'; 
}
?>
</div>

J'espère que ce petit bout de code vous sera utile.

Facebook 0 Twitter 0 Google+ 0 Linkedin 0 Mail
Mots clés associés : , ,

A propos de l'auteur : Jerome Mattone

Gérant de l'agence web JM Créa à Antibes, développeur php, mysql, css javascript et expert en référencement Google avancé.

Laisser un commentaire