Tutoriel Utiliser Google Maps en C#

Paradise'

Premium
Inscription
30 Juin 2013
Messages
4 259
Réactions
4 384
Points
20 795
1479153091-header.png


Bonjour à vous membre premium de :RG:
Dans ce tutoriel je vais vous expliquer comment utilisé Google Maps avec votre logiciel en C#, cela peut être utile pour la distance entre un point A et un point B, après à vous de voir comment vous allez l'utiliser si vous vous en servez.

Donc tout d'abord nous allons faire le « design » de notre application qui pour moi est simple étant donné qu'il s'agit d'un tutoriel.
Chaque item qui est utilisé dans le code est renommé simplement, je pense cela devrait être compréhensible mais je vous l'expliquerai quand même.
• 7 zones de texte
• 3 radio bouton
• 1 bouton
• les labels sont facultatifs, mais appréciables pour l'utilisateur.

Ce qui au final donne quelque chose comme ceci :

1479153122-2d2deac99ffa446abb1e7ff01e2185cd2.png

Donc au final, pour les noms :
• Zone de texte Départ : txtDepart
• Zone de texte Arrivé : txtArrivee
• Zone de texte Durée : txtDuree
• Zone de texte Durée (raccourci) : txtDureeFormat
• Zone de texte Distance : txtDistance
• Zone de texte Distance (raccourci) : txtDistanceFormat
• Zone de texte Réponse du service web : txtMessageXML
• Radio bouton Voiture : rbVoiture
• Radio bouton Vélo : rbVelo
• Radio bouton A pied : rbAPied


Maintenant que le plus pénible est fait, on va passer au code ? ::):

Pour commencer, on définit les références qu'on utilise, pas la peine de les importer.
Code:
using System.Xml;
using System.Net;
using System.IO;
using System.Xml.Linq;


Ce qui au final nous donne ça :
1479153153-a1a97d1445e0afb5841435f6406001612.png


Ensuite, juste avant le Main on ajoute ceci :
Code:
string mode = "";
WebClient webClient = new WebClient();
StreamReader reader;
XDocument xDocument = new XDocument();
Comme ceci simplement :
1479153166-65f9116ed52801403c1a2917d1d7a4e0.png


Ensuite, on va faire une fonction pour voir comment l'utilisateur veut se déplacer.
Code:
        private void CheckRadioBoutons()
        {
            if (rbAPied.Checked) mode = "walking";
            if (rbVelo.Checked) mode = "bicycling";
            if (rbVoiture.Checked) mode = "driving";
        }

Donc maintenant, on a presque terminé, il ne reste plus qu'à faire le code du bouton :

Code:
            CheckRadioBoutons();
            // On prépare la requete
            string requete = "http://maps.googleapis.com/maps/api/distancematrix/xml?origins=" + txtDepart.Text + "&destinations=" + txtArrivee.Text + "&mode=" + mode + "&sensor=true";
            // On envoie la requete
            reader = new StreamReader(webClient.OpenRead(requete));
            // On lit la réponse
            string reponse = reader.ReadToEnd();
            reader.Close();

            txtMessageXML.Text = reponse;
            xDocument = XDocument.Parse(reponse);
            string status = xDocument.Descendants().Where(n => n.Name == "status").FirstOrDefault().Value;
            // Si le web service a renvoyé "OK"  affichage des résultats
            if (status == "OK")
            {
                string duration = xDocument.Descendants().Where(n => n.Name == "value").Where(l => l.Parent.Name == "duration").FirstOrDefault().Value;
                string strduration = xDocument.Descendants().Where(n => n.Name == "text").Where(l => l.Parent.Name == "duration").FirstOrDefault().Value;
                string distance = xDocument.Descendants().Where(n => n.Name == "value").Where(l => l.Parent.Name == "distance").FirstOrDefault().Value;
                string strdistance = xDocument.Descendants().Where(n => n.Name == "text").Where(l => l.Parent.Name == "distance").FirstOrDefault().Value;

                txtDistance.Text = distance;
                txtDistanceFormat.Text = strdistance;
                txtDuree.Text = duration;
                txtDureeFormat.Text = strduration;
            }
            else
            {
                MessageBox.Show("Une erreur s'est produite , veuillez consulter la réponse du web service");
            }

Donc voila c'est fonctionnel ::):
Voila une capture du rendu final :



 
Haut