Google Maps, Javascript

[Tuto] Calculer et tracer un itinéraire avec Google Maps API v3

Cette article est la suite logique de ce précédent billet sur la découverte de l’API Google Maps V3.
Nous repartirons donc de l’archive précédente que vous pouvez télécharger ici.

Alors aujourd’hui, nous allons réaliser un calcul d’itinéraire similaire à certains services tels que Mappy ou Viamichelin.

Commençons par créer le formulaire de saisie du point de départ et du point d’arrivée ainsi qu’une div que nous identifierons panel et qui sera destinée à contenir les différentes étapes de l’itinéraire.

        <div id="destinationForm">
            <form action="" method="get" name="direction" id="direction">
                <label>Point de départ :</label>
                <input type="text" name="origin" id="origin">
                <label>Destination :</label>
                <input type="text" name="destination" id="destination">
                <input type="button" value="Calculer l'itinéraire" onclick="javascript:calculate()">
            </form>

        </div>
       <div id="panel"></div>

Un formulaire tout à fait banal, vous remarquerez que nous associons l’action du clique sur notre bouton « Calculer l’itinéraire » à l’appel de la fonction javascript calculate().
Nous allons créer une variable globale que nous appellerons panel qui correspond au DOM de notre div panel et ajouter dans la fonction initialize, l’appel à la classe DirectionsRenderer qui comme son nom l’indique nous permettra plus tard d’afficher le trajet sur notre carte et les différentes étapes de l’itinéraire.
En-tête du fichier functions.js

var map;
var panel;
var initialize;
var calculate;
var direction;

Dans notre fonction initialize

direction = new google.maps.DirectionsRenderer({
    map   : map, 
    panel : panel 
});

Il ne nous reste plus qu’à créer la fonction calculate qui se chargera de récupérer les valeurs saisies dans le formulaire et faire appel à l’API de Google pour calculer et tracer l’itinéraire.

calculate = function(){
    origin      = document.getElementById('origin').value; // Le point départ
    destination = document.getElementById('destination').value; // Le point d'arrivé
    if(origin && destination){
        var request = {
            origin      : origin,
            destination : destination,
            travelMode  : google.maps.DirectionsTravelMode.DRIVING // Type de transport
        }
        var directionsService = new google.maps.DirectionsService(); // Service de calcul d'itinéraire
        directionsService.route(request, function(response, status){ // Envoie de la requête pour calculer le parcours
            if(status == google.maps.DirectionsStatus.OK){
                direction.setDirections(response); // Trace l'itinéraire sur la carte et les différentes étapes du parcours
            }
        });
    } //http://code.google.com/intl/fr-FR/apis/maps/documentation/javascript/reference.html#DirectionsRequest
};

Quelques explications… Lorsque l’on crée la requête, vous avez certainement remarqué la présence d’un paramètre nommé travelMode, il s’agit du type de transport (voiture, piéton…). Le mode DRIVING correspond bien-entendu au mode de conduite en voiture, les autres modes sont WALKING (piéton) et BICYCLING (vélo), attention à ce jour de rédaction de l’article, le mode BICYCLING est en beta.
A propos de la requête, il s’agit d’un objet de type DirectionsRequest auquel vous pouvez renseigner plus de paramètres par exemple l’unité de valeur de la distance ou encore le passage ou non par autoroute…etc
Voir http://code.google.com/intl/fr-FR/apis/maps/documentation/javascript/reference.html#DirectionsRequest pour plus d’informations
L’envoie de la requête se fait via la méthode route() de l’instance de DirectionsService, celle-ci nous met alors à jour un statut correspondant au bon déroulement ou non de la requête. Nous vérifions donc si le paramètre « OK » de l’objet DirectionsStatus vaut true pour tracer l’itinéraire et le détail du parcours via la méthode setDirections().

Attention : Vous remarquerez que le détail de l’itinéraire est rédigé en Anglais, pour modifier la langue il vous suffit de rajouter un paramètre de langue lors de l’inclusion de l’Api comme ci-dessous

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false&language=fr"></script>

Pour la démonstration cliquez sur le lien suivant https://www.shatimes.com/googlemap/calcul-itineraire/

Pour télécharger la source c’est par ici https://www.shatimes.com/googlemap/calcul-itineraire.zip

A bientôt les amis !

Previous Post Next Post

You Might Also Like

57 Comments

  • Reply Cortes 22 février 2012 at 15 h 56 min

    Bonjour, j’ai suivi votre tutoriel avec beaucoup d’intérêt. En revanche, j’ai un problème rien ne s’affiche dans la div panel. Il n’y a pas les indications comme sur votre carte.

    • Reply admin 22 février 2012 at 16 h 06 min

      Bonjour Cortes,

      Merci pour l’intérêt porté au tuto :-)

      Avez-vous essayé de télécharger les sources de ma démonstration ?

      https://www.shatimes.fr/googlemap/calcul-itineraire.zip

      • Reply Canyoning Verdon 22 février 2012 at 20 h 27 min

        Merci,
        Ça marche super bien.
        Par contre, à la place de mettre du texte dans la destination, je pensais mettre une liste déroulante. Avez vous une idée pour faire ça.
        Je pensais mettre une variable php qui écrirais du texte dans l’input « destination » mais c’est compliqué.
        Et encore merci.

        Lien où se trouve la carte en chantier.
        http://www.canyoning-sudest.com/localisation.php

        • Reply admin 18 mars 2012 at 15 h 42 min

          Bonjour,

          Je vois que vous avez réussi à faire ce que vous souhaitiez.

          A bientôt

      • Reply IRBA 25 juillet 2012 at 16 h 25 min

        Bonjour,

        Le tuto est trés interessant. Par contre, j’aurai une question, est que l’API google map V3 permet de créer un itinéraire à partir de plusieurs points.

        C’est à dire, en fournissant les points de passage dans l’ordre, google map nous donne un itinéraire possible par ces points.

        Merci

  • Reply Mico 14 avril 2012 at 22 h 10 min

    Bonjour et merci

    ça marche très bien et facile à mettre en place

    Mais je souhaiterais l’utiliser pour smartphone et je suis nul en javascript
    je suppose que l’on peut récuperer la longitude et latitude avec la fonction :
    navigator.geolocation.getCurrentPosition(function(position)

    mais je bloque a la ligne :
    origin = document.getElementById(‘origin’).value;
    (enfin je suppose !)

    Je vous remercie beaucoup de votre aide

    • Reply admin 16 avril 2012 at 9 h 51 min

      Bonjour,

      Pour récupérer la géolocalisation d’un smartphone, vous pouvez en effet utiliser la fonction ci-dessous

      navigator.geolocation.getCurrentPosition(function(position){
      lat = position.coords.latitude // Pour récupérer la latitude
      lng = position.coords.longitude // Et pour récupérer la longitude
      }

      Concernant la propriété origin, elle attend soit
      – Une chaîne de caractère (Lille par exemple)
      – Soit un objet LatLng que vous pouvez obtenir avec la latitude et la longitude justement :-)

      Vous pouvez donc faire ceci, comme dans le précédent tutoriel https://www.shatimes.fr/tuto-google-map-api-v3/
      origin = new google.maps.LatLng(lat, lng);

      A bientôt

      • Reply Mico 17 avril 2012 at 17 h 23 min

        Bonjour

        et merci beaucoup pour votre aide

        j’allais vous envoyer un message pour vous dire que je n’y arrivais pas et a l’instant SUPER ça fonctionne !
        comme quoi il faut pas laisser tomber ! (1 jour et demi sur 3 lignes !)

        maintenant faut que j’arrive à mettre des marqueurs plus jolis

        Je ne voudrais pas abuser mais si vous avez une piste !

        Encore merci

        A bientôt

      • Reply Mazzella 8 novembre 2012 at 16 h 55 min

        Bonjour,
        t’es tuto mon bcp aider, j’ai presque fini de faire se que je veux faire, mais comme je me debrouille plus en PHP que JavaScript. Je n’arrive pas à intégrer ta fonction pour la geolocalisation dans le code…. Sa doit etre tres simple mais je ne sais pas faire. Et surtout comment récuperer les coordonés pour les enregistrer en BDD car du php en JS, c’est simple. Mais l’inverse…. Récuperer un variable js pour l’enregistrer dans ma BDD. J’ai penser faire innerHTML avec la valeur de la variable js dans un input par exemple puis l’enregistrer. Je pense que c’est faisable. Mais pour sa il me faut la géolocalisation. Il est possible que je me soit repeté mais j’espere que tu m’as compris…
        Merci

        • Reply Mazzella 8 novembre 2012 at 17 h 49 min

          Une version plus propre:

          navigator.geolocation.getCurrentPosition(function(position){
          var lat = position.coords.latitude // Pour récupérer la latitude
          var lng = position.coords.longitude

          var map;
          var initialize;

          //Afficher la latitude en HTML
          var div_lat = document.getElementById(‘lat’);
          div_lat.innerHTML += lat+ » »;

          //Afficher la longitude en HTML
          var div_lng = document.getElementById(‘lng’);
          div_lng.innerHTML += lng+ » »;

          //////////////////////////////////////////////////////////////////////////
          initialize = function(){
          var latLng = new google.maps.LatLng(lat, lng); // Correspond au coordonnées de Lille
          var myOptions = {
          zoom : 14, // Zoom par défaut
          center : latLng, // Coordonnées de départ de la carte de type latLng
          mapTypeId : google.maps.MapTypeId.ROADMAP, // Type de carte, différentes valeurs possible HYBRID, ROADMAP, SATELLITE, TERRAIN
          maxZoom : 20
          };

          //Geolocalisation
          // Et pour récupérer la longitude
          //alert(« lat : « +lat+ »lon : « +lng);

          //var origin = new google.maps.LatLng(lat, lng);
          ///////////////////////

          map = new google.maps.Map(document.getElementById(‘map’), myOptions);

          var marker = new google.maps.Marker({
          position : latLng,
          map : map,
          title : « Lille »
          //icon : « marker_lille.gif » // Chemin de l’image du marqueur pour surcharger celui par défaut
          });

          var contentMarker = [
           »,
           »,
           »,
          Lorem‘,
          Ipsum‘,
          Dolor‘,
           »,
           »,
          ‘LilleSuspendisse quis magna dapibus orci porta varius sed sit amet purus. Ut eu justo dictum elit malesuada facilisis. Proin ipsum ligula, feugiat sed faucibus a, google sit amet mauris. In sit amet nisi mauris. Aliquam vestibulum quam et ligula pretium suscipit ullamcorper metus accumsan.’,
           »,
           »,
          ‘Aliquam vestibulumAliquam vestibulum quam et ligula pretium suscipit ullamcorper metus accumsan.’,
           »,
           »,
          ‘Pretium suscipitLoremIpsumDolorAmectus’,
           »,
           »,
           »
          ].join( »);

          var infoWindow = new google.maps.InfoWindow({
          content : contentMarker,
          position : latLng
          });

          google.maps.event.addListener(marker, ‘click’, function() {
          infoWindow.open(map,marker);
          });

          google.maps.event.addListener(infoWindow, ‘domready’, function(){ // infoWindow est biensûr notre info-bulle
          jQuery(« #tabs »).tabs();
          });
          };

          initialize();
          })();

          • admin 8 novembre 2012 at 17 h 52 min

            Salut,

            Je vois que tu as trouvé la solution tout seul finalement :-)

            Merci de nous avoir partager ta solution ;-)

  • Reply admin 17 avril 2012 at 17 h 29 min

    Bonjour,

    Avez-vous regardé le premier tutoriel présent à cette adresse https://www.shatimes.fr/tuto-google-map-api-v3/ ?

    Vous y trouverez comment placer un marqueur avec l’icône de votre choix ;-)

    Allez je vous aide un peu

    var marker = new google.maps.Marker({
    position : latLng,
    map : map,
    title : « Lille »
    //icon : « marker_lille.gif »
    });

    A bientôt

  • Reply Mico 17 avril 2012 at 18 h 36 min

    Bravo, super rapide la reponse !

    Vous avez raison, une relecture du tuto calmement me fera du bien

    merci encore
    A bientôt

  • Reply Mico 19 avril 2012 at 11 h 54 min

    Bonjour

    encore Moi

    Mes tests de base fonctionnent parfaitement
    mais encore 2 interrogations :
    Peut-on mettre une adresse complète (issue d’une variable PHP) a la place de longitude et latitude pour le centrage

    Et je ne pas comment changer l’icone de départ et arrivée

    Merci
    A bientôt

  • Reply woot 19 avril 2012 at 17 h 36 min

    Merci beaucoup pour ce tuto qui m’a bien aidé !
    -> favorite =)

  • Reply Dimitri 15 mai 2012 at 16 h 32 min

    Bonjour,

    Tout d’abord merci pour ce tuto, qui est très explicite.

    Ensuite, je suis en train de développer une application en java, dans laquelle j’ai besoin de calculer l’itinéraire le plus rapide entre une adresse d’origine et une adresse destination. As-tu une idée de comment je peux faire?

    Merci d’avance!!!

    • Reply admin 15 mai 2012 at 16 h 40 min

      Salut,

      Avec Java, tu peux très bien créer une JSP et intégrer alors le code de la même manière qu’avec n’importe quel langage côté serveur (Php, Python…)

      En espérant t’avoir éclairé ;-)

      • Reply Dimitri 4 août 2012 at 13 h 48 min

        Bonjour, désolé de t’importuner encore,

        L’application que je suis en train de développer est une application locale, et non un site Web, est-il possible à ton avis d’utiliser google map pour ce genre d’application?

  • Reply VDP 10 juillet 2012 at 12 h 25 min

    Bonjour et merci.

    Ce tuto est très bon. Felicitations

    Une question : Peut’ on récupérer les deux adresses depuis une autre page php method post par exemple?

    • Reply admin 13 juillet 2012 at 11 h 38 min

      Salut,

      Y’a pas de quoi le tuto est là pour aider :-)

      Pour te répondre c’est tout à fait possible oui

  • Reply GRANGER 19 juillet 2012 at 11 h 38 min

    Bonjour,

    Tout d’abord merci pour ce tuto :D
    Je suis en train de développer une plateforme de covoiturage pour aller au Stade (Geoffroy-Guichard ^^).
    Sur les détails des annonces, j’aimerai donc afficher la carte, pour ça, pas de problème. Simplement, peut-on ajouter des étapes au trajet ? Si oui, comment ?

    Merci d’avance. :)

  • Reply Alexis 2 août 2012 at 18 h 04 min

    Merci pour ce tuto très bien fait. C’est exactement ce que je recherchais.

  • Reply ROBERT 7 août 2012 at 8 h 57 min

    Bonjour et merci pour ton tuto!

    J’ai juste une petite question:

    est-il possible d’envoyer le résultat dans une fenetre popup?

    (Comme target=new avec href)

    merci par avance,

  • Reply Zakaoai 28 octobre 2012 at 13 h 38 min

    Bonjour, j’aimerais savoir s’il est possible avec cet fonctionnalité il est possible d’effectuer un circuit avec plusieurs destinations rangé dans le désordre mais affichant quand même le circuit le plus court pour passer par tout les points ?

  • Reply Omar 5 novembre 2012 at 12 h 24 min

    Bonjour,

    Je vous remercie pour votre tutoriel. Seulement j’ai une question, est ce qu’il y a un moyen de trouver l’itinéraire à partir des coordonnées GPS et non des adresses?

    Merci d’avance.

  • Reply Lionel 4 décembre 2012 at 13 h 41 min

    Bonjour,

    Super ton tuto, merci :)
    Je le dis au cas où: j’avais un problème avec la carte qui ne s’affichait pas. J’avais tout bêtement oublié les css qui donne une dimension à #map…
    Une fois rajoutés, tout marche nickel :)

  • Reply Nom 20 février 2013 at 17 h 25 min

    J’ai adoré Merciii pr votre tuto ça m’a bcp aidé.

    J’ai perdu bcp de temps à lire la doc de google maps en vain.

    Votre tuto a résolu plusieurss problèmes.

    Merci encore

  • Reply Hugo 17 avril 2013 at 8 h 32 min

    Bonjour,
    Un dessin vaut mieux que mille mots… …Merci.

    Il me manque maintenant une dernière méthode ou fonction pour commencer mon projet ;

    Comment faire pour afficher uniquement les marker qui se trouveraient à 5Km de parts et d’autres du trajet calculer ?

    Je n’ai pas trouvé dans les exemples google maps api, si vous aviez une piste…

    Dans tout les cas, merci pour votre temps conssacré ici ;-)

  • Reply Clément 28 mai 2013 at 0 h 08 min

    Énorme !

    Merci infiniment de partager tes sources librement comme ça ! C’est grâce à des gens comme toi que des gens comme moi arrivent à comprendre et progresser !

    Continues le bon taff comme ça ! ;)

    Merci encore.

  • Reply amine 2 novembre 2013 at 23 h 53 min

    merci très bon tutorial (simple et efficace).

    • Reply admin 5 novembre 2013 at 12 h 26 min

      Merci ;-)

  • Reply Yves 3 mars 2014 at 19 h 23 min

    Bonjour,
    merci pour ce très bon tutoriel.

    Une question néanmoins:
    peut-on extraire le nombre de kilomètres? Comment?

    Merci

    • Reply admin 5 mars 2014 at 11 h 25 min

      Salut,

      Merci pour ton retour.

      Oui il est possible d’extraire la distance, il faut que tu regardes la réponse de la requête directionsService.

      Ci-dessous un exemple :

      Object {routes: Array[1], status: « OK », Tb: Object}
      Tb: Object
      destination: « tourcoing »
      origin: « lille »
      travelMode: « DRIVING »
      __proto__: Object
      routes: Array[1]
      0: Object
      bounds: Tg
      fa: Mg
      ta: Rg
      __proto__: Tg
      copyrights: « Données cartographiques ©2014 Google »
      legs: Array[1]
      0: Object
      distance: Object
      text: « 15,0 km »
      value: 15024

      La value dans l’objet distance correspond à la distance en mètre ;-)

  • Reply Yves 5 mars 2014 at 22 h 52 min

    Bonjour,

    Merci pour cette réponse, mais j’ai un peu du mal à saisir…
    Dois-je copier ce code dans functions.js?
    Comment le récupérer dans index?

    Merci d’avance

    • Reply admin 6 mars 2014 at 16 h 18 min

      Bonjour,

      Ce que j’ai affiché dans mon commentaire précédent est un debug de l’objet response pour te montrer le chemin jusque la valeur de la distance (voir ci-dessous l’emplacement).

      directionsService.route(request, function(response, status){ // Envoie de la requête pour calculer le parcours
      if(status == google.maps.DirectionsStatus.OK){
      direction.setDirections(response); // Trace l’itinéraire sur la carte et les différentes étapes du parcours
      }
      });

  • Reply Yves 6 mars 2014 at 18 h 56 min

    Effectivement, j’étais bien sur cette partie là, mais lorsque je demande:
    response.distance
    il me renvoie undefined;
    Ca ne fonctionne pas non plus avec google.maps.DirectionsService.distance, ni avec toutes les combinaisons que j’ai essayé….

    Comment accèdes-tu à cette valeur? Je n’arrive pas à trouver….
    un grand Merci

  • Reply admin 7 mars 2014 at 9 h 58 min

    Salut,

    Tu peux simplement faire un console.log(response) dans la condition qui vérifie le DirectionsStatus, tu accéderas à l’objet et toutes ses propriétés que j’ai posté dans le commentaire précédent.

  • Reply Walter 16 mars 2014 at 17 h 33 min

    Bonjour, tutoriel très intéressant, toutefois comme quelques autres, j’aimerai pouvoir ajouter plusieurs point allant jusqu’à 20 point.

    Je développe une application métier pour livreur / collecteur et effectivement chaque véhicule à plusieurs arrêts à faire, est-il possible de le faire et de calculer ainsi la route la plus optimale ? si oui pouvez-vous donner un exemple ?

    D’avance merci, et bravo pour votre tutoriel plutôt clair.

  • Reply BAILET jean-Jacques 24 mars 2014 at 10 h 55 min

    Merci pour le code et l’explication de cette fonctionnalité que l’on peut facilement imbriquer dans du HTML.

  • Reply younes 18 novembre 2014 at 7 h 53 min

    Merci beaucoup un tuto trés important j’ai essayé et ça marche bien sur une page JSP merci encore !

  • Reply Agen 21 décembre 2015 at 17 h 56 min

    Merci pour le script

  • Reply dada14 11 mai 2016 at 9 h 54 min

    bonjour, tout marche bien très bien
    sauf les itinéraires il indique pas le chemin le plus cour
    comme ex Caen Lisieux gros détour
    peut on modifier ce problème
    merci par avance pour ce tuto

  • Reply manu 17 août 2016 at 11 h 23 min

    chez moi parfois la carte s’affiche, parfois pas… lorsque je teste sur votre site les même coordonnées que sur le mien, et bien ensuite ça fonctionne sur mon site.. comme si ça avait « débloqué » qqch.. une idée ?

  • Reply Benoît 3 octobre 2016 at 22 h 59 min

    Bonjour, merci de ce tuto. Je suis débutant. Y a-t-il moyen de mettre un adresse de destnation par défaut ?

    Merc

    • Reply Sulli A. 6 octobre 2016 at 10 h 02 min

      Salut,

      Oui, il te suffit d’entrer directement la valeur souhaitée dans « destination »

      var request = {
      origin : origin,
      destination : destination,
      travelMode : google.maps.DirectionsTravelMode.DRIVING // Type de transport
      }

      • Reply Benoît 22 octobre 2016 at 13 h 36 min

        Merci beaucoup pour ta réponse. En fait, je l’ai mise dans le champ de destination avec un paramètre « disabled ».
        Du coup, j’en profite pour poser une autre question. Comment peut-on proposer d’entrer soit l’adresse du point de départ à la main, soit d’utiliser la géolocalisation comme point de départ ?
        Merci de ton aide.

        • Reply Sulli A. 27 octobre 2016 at 10 h 11 min

          Salut,

          Tu peux par exemple imaginer un bouton qui lance une géolocalisation et complète le champs, ou lancer une géo-location automatiquement au chargement de la page, l’utilisateur pourra ensuite éditer le champs de départ si le lieu ne lui convient pas.

          • Benoît 5 novembre 2016 at 15 h 34 min

            Merci, je vais explorer tout ça

  • Reply manman 7 décembre 2016 at 18 h 13 min

    Bonjour,

    Merci beaucoup ton le tuto, mais reste que ça marche pas en Local !! et sur ton tuto tu n’a pas ajouté de une KEY pour faire marché la carte, comment vous faite ?, merci

  • Reply Sulli A. 8 décembre 2016 at 18 h 11 min

    Salut,

    Est-ce que tu as essayé de télécharger les sources ?

  • Reply Bala 30 décembre 2016 at 11 h 25 min

    Salut, merci pour ce tuto ça m’a beaucoup fait avancé mais voilà je rencontre un problème. Lorsque je lance le script j’ai ce message d’erreur qui s’affiche :

    Petit problème… Une erreur s’est produite
    Google Maps ne s’est pas chargé correctement sur cette page. Pour plus d’informations techniques sur cette erreur, veuillez consulter la console JavaScript.

    et lorsque je consulte la console JavaScript j’ai ce message qui est affiché en rouge :

    js?sensor=false&language=fr?key=AIzaSyBx3EzcPwWsrXQh56PD4e-mqISGFenvtrQ:34 Google Maps API error: MissingKeyMapError https://developers.google.com/maps/documentation/javascript/error-messages#missing-key-map-error

    Je ne suis pas très bon en Anglais mais apparemment cela est lié à la clé de l’API google maps, j’en ai donc récupéré une sur le site de Google prévue à cette effet.

    et je l’ai inséré comme ce qui suit :

    Est ce que quelqu’un a une solution à proposé ? Merci d’avance !

    • Reply Sulli A. 13 janvier 2017 at 11 h 30 min

      Salut,

      Depuis le 22 juin 2016, une clé d’API est obligatoire pour les noms de domaines qui n’utilisaient pas l’API de Google.

      Je prévois une mise à jour de l’article rapidement, merci pour ton retour.

  • Reply Marchocias 10 janvier 2017 at 15 h 34 min

    Hello et merci pour ce tuto :)
    Je ne sais pas comment vous vous y prenez pour vous passer d’API Key, mais chez moi ça ne fonctionne pas pour cette raison : http://stackoverflow.com/questions/2769148/whats-the-api-key-for-in-google-maps-api-v3/37994162#37994162
    la v3 need une clé depuis le 22 juin 2016

    • Reply Sulli A. 13 janvier 2017 at 11 h 28 min

      Salut,

      Je viens de consulter la documentation de Google Maps et effectivement la clé d’API est à nouveau obligatoire depuis le 22 juin 2016 pour les noms de domaines qui n’utilisaient pas l’API jusqu’à présent, cela explique pourquoi ça fonctionne encore aujourd’hui sur ce site ;-)

      Merci pour ton retour, je vais mettre à jour l’article avec les nouvelles specs

    Leave a Reply