contact@jm-crea.com
521 ch. du Puy, 06600 Antibes
Fixe : 09 80 36 03 01 Mobile : 06 61 86 58 07
JM Créa

0

was successfully added to your cart.

  • Accueil
  • Site Internet
    • Site vitrine
    • Site catalogue
    • Site E-commerce
    • Site one page
    • Par secteurs d’activité
    • Dépannage site Internet
  • Référencement
    • Référencement naturel
    • Référencement Google Ads
  • Webmarketing
    • Campagne SMS marketing
    • Création de logo
    • Identité visuelle
    • Facebook ADS
    • Maintenance de sites Internet
    • Inbound Marketing
    • Imprimerie
    • Intégration HTML
    • Création de logiciel
  • Réalisations
  • Outils
  • Shop
    • Plugins WordPress
    • PHP scripts
  • Blog
  • Contact
JM Créa
  • Accueil
  • Site Internet
    • Site vitrine
    • Site catalogue
    • Site E-commerce
    • Site one page
    • Par secteurs d’activité
    • Dépannage site Internet
  • Référencement
    • Référencement naturel
    • Référencement Google Ads
  • Webmarketing
    • Campagne SMS marketing
    • Création de logo
    • Identité visuelle
    • Facebook ADS
    • Maintenance de sites Internet
    • Inbound Marketing
    • Imprimerie
    • Intégration HTML
    • Création de logiciel
  • Réalisations
  • Outils
  • Shop
    • Plugins WordPress
    • PHP scripts
  • Blog
  • Contact
contact@jm-crea.com
521 ch. du Puy, 06600 Antibes
Fixe : 09 80 36 03 01 Mobile : 06 61 86 58 07

0

was successfully added to your cart.

Comment calculer une distance Google Map avec du PHP

HomeTuroriels Comment calculer une distance Google Map avec du PHP
by JM Créa 22 mars 2017 in  Turoriels Google map Tutoriel HTML Tutoriel PHP 12

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

 

 

MAJ le 12 novembre 2021 : Ce script ne fonctionne plus. Google demande à présent un abonnement à Google Cloud payant pour obtenir une clé API. C’est pourquoi nous avons développé le SEUL plugin WordPress au monde capable de calculer une distance avec prix au KM entièrement customisable et responsive design. Vous pouvez le télécharger ici. Vous pouvez également le télécharger en version PHP Fullstack ici.

 

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.

2
0
Previous Post

Changement d'algorithme de chez Google ou bug informatique ?

Actualités

Next Post

Faut-il utiliser des mots clés dans son nom de domaine ?

Référencement

12 commentaires

  1. JM Créa-Reply
    22 mars 2017 at 17h36

    Ce script n’étant plus d’actualité, nous avons du recréer un autre script similaire à l’achat cette fois-ci.

    Version plugin WordPress : https://www.jm-crea.com/scripts-php/plugin-wordpress-calculette-vtc-taxi

    Version PHP fullstack : https://www.jm-crea.com/scripts-php/calculateur-de-distance-en-php

  2. kekre-Reply
    22 mars 2017 at 8h12

    Bonjour
    merci besucoup pour Ce code malheurement j ai le Meme Problem Que chaumette
    $distance = $charger_googlemap->route->leg->distance->value;

    En cliquant sur le bouton ” calculer le prix et le trajet “, j’ai un nouveau un message d’erreur:

    “Trying to get property ‘value’ of non-object”

    J espere bien que vous pouvez m aide .

    Merci beaucoup encore une fois

    • JM Créa-Reply
      22 mars 2017 at 8h56

      Bonjour,

      Pour tout vous dire, ce code date de 2017. Depuis ce temps, je ne me suis pas repenché dessus car je n’en ai plus eu l’utilité.

      Aux dernières nouvelles, il faut avoir sa propre clé dispo sur Google cloud, à l’époque on en avait pas besoin.

      Si j’ai un peu de temps, j’essaierai de creuser pour voir d’où vient le problème.

      Bonne journée.

  3. JM Créa-Reply
    22 mars 2017 at 17h59

    À priori il faut avoir une clé. Google fait payer cette fonction maintenant.

    Il suffit de cliquer ici pour s’en rendre compte :

    http://maps.google.com/maps/api/directions/xml?language=fr&origin=nice&destination=paris&sensor=false

    Les explications communiquées par Google sont ici : http://g.co/dev/maps-no-account

    Sans clé je ne peux pas tester, et pour tout vous dire, pas envie de payer d’autant plus que je n’ai plus besoin de ce module.

    Je l’avais développé il y a un certain temps pour un client qui a depuis fermé sa société. Donc je ne m’y suis plus penché.

    Bon courage à tous.

  4. Van Der Perre Morgan-Reply
    22 mars 2017 at 15h36

    Bonjour,

    Je me permets de vous contacter, j’ai generé une clé api pour le script, cependant il me retourne 0 kms a chaque fois. En allant sur le site il me parle de permissions. Sur les graphiques, on constate l’activité lors d’une demande mais rien.

  5. Ayari-Reply
    22 mars 2017 at 8h28

    Bonjour
    merci besucoup pour Ce code malheurement j ai le Meme Problem Que chaumette
    $distance = $charger_googlemap->route->leg->distance->value;

    En cliquant sur le bouton ” calculer le prix et le trajet “, j’ai un nouveau un message d’erreur:

    “Trying to get property ‘value’ of non-object”

    J espere bien que vous pouvez m aide .

    Merci beaucoup encore und fois

  6. ayari-Reply
    22 mars 2017 at 12h03

    Bonjour,

    j avais aussi la meme problem aussi
    En cliquant sur le bouton ” calculer le prix et le trajet “, j’ai un nouveau un message d’erreur:

    “Trying to get property ‘value’ of non-object”

    Celle-ci semble être relative au bloc de la fonction calculer_distance, de la ligne 32 du code ci dessus, à savoir:

    $distance = $charger_googlemap->route->leg->distance->value;

    Pourriez-vous m aidez suis neveau en php.

    merci

  7. chaumette-Reply
    22 mars 2017 at 22h08

    Bonjour,

    Je voulais vous remercier pour votre réponse.

    En cliquant sur le bouton  » calculer le prix et le trajet « , j’ai un nouveau un message d’erreur:

    « Trying to get property ‘value’ of non-object »

    Celle-ci semble être relative au bloc de la fonction calculer_distance, de la ligne 32 du code ci dessus, à savoir:

    $distance = $charger_googlemap->route->leg->distance->value;

    Pourriez-vous m’en dire plus à ce sujet.

    En vous remerciant par avance pour votre indulgence.

    Cordialement.

  8. chaumette-Reply
    22 mars 2017 at 19h06

    bonjour,
    Je voulais vous remercier pour ce morceau de code.
    J ai voulu l intégrer dans mon site web, cependant aprés execution, ce message d’erreur apparait:
    Fatal error: Call to undefined function: simplexml_load_string() in /mnt/171/sda/5/f/lc.taxi/Nouveau_site_web/distance.php on line 28
    Pouvez-vous m ‘en dire plus.
    Je suis débutant en php.
    En vous remerciant par avance.
    Cordialement

    • JM Créa-Reply
      22 mars 2017 at 12h02

      Bonjour,

      Le problème vient du module XML qui ne doit pas être installé sur apache.

      Il faut se connecter en SSH et l’installer de cette manière et relancer apache :

      sudo apt-get install php7.0-xml /etc/init.d/apache2 restart

      Ceci est pour une instalaltion sur une version php7.
      Pour une installation sur php5.6 par exemple, il faudra faire comme ceci :

      sudo apt-get install php5.6-xml /etc/init.d/apache2 restart

  9. BOURGER-Reply
    22 mars 2017 at 9h52

    Bonjour j’utilise votre petit bout de code pour mon site mon module de devis et aujourd’hui il en fonctionne plus (il fonctionné très très bien jusque là et je n’ai rien changé à mon code) il ne retourne plus la distance

    auriez vous une idée du probleme ?

    • JM Créa-Reply
      22 mars 2017 at 10h10

      Bonjour,

      Effectivement, depuis peut, Google impose une clé API.
      Il faut se rendre ici et générer la clé.

      Une fois que vous avez la clé, il faut remplacer :

      $url = 'http://maps.google.com/maps/api/directions/xml?language=fr&origin='.$adresse1.'&destination='.$adresse2.'&sensor=false'; //on créé l'url
      par
      $url = 'http://maps.google.com/maps/api/directions/xml?language=fr&origin='.$adresse1.'&destination='.$adresse2.'&sensor=false&key=VOTRE_CLE_API'; //on créé l'url

      À priori, c’est censé fonctionner. Mais je n’ai pas testé. Je vous laisse tester pour moi 🙂

Publier un commentaire Annuler la réponse

Rechercher un article

Catégories

  • Actualités
  • Référencement
  • Turoriels
  • Webmarketing

Outils

  • Générateur de QR Code
  • Générateur de mot de passe
  • Générateur DKIM
  • Localiser une adresse IP
  • RBL Check
  • SPF check

Les derniers articles

Est-ce que l’UX est pris en compte par l’algorithme de Google ?

15 novembre 2022

Comment faire un post qui convertit ?

30 octobre 2022

Combien coûte un site Internet ?

18 octobre 2022

Générateur de backlinks, faut-il les utiliser ?

10 octobre 2022

Comment créer un shortcode avec WordPress ?

30 septembre 2022

Comment trouver de nouveaux clients lorsque l’on est indépendant ?

21 juillet 2022

Plugin WordPress captcha contact Form 7

17 juin 2022

Images libres de droits gratuites, où en trouver ?

5 mai 2022

Comment être premier sur Google ?

19 janvier 2022

Qu’est-ce qu’un sitemap XML et comment le mettre en place sur son site ?

4 janvier 2022

Coordonnées

09 80 36 03 01
contact@jm-crea.com
521 chemin du Puy, 06600 Antibes
09:00h - 16:30h

Zones géographiques

  • Création site Internet Sophia Antipolis
  • Création site Internet Nice
  • Création site Internet Cannes
  • Création site Internet Villeneuve-Loubet
  • Création site Internet Monaco
  • Création site Internet Mougins

Derniers articles

Est-ce que l’UX est pris en compte par l’algorithme de Google ?

15 novembre 2022

Comment faire un post qui convertit ?

30 octobre 2022

Combien coûte un site Internet ?

18 octobre 2022

Mentions légales | Agence web JM Créa