Récupérer une distance en km grâce API Google Maps/DotNet/XML


static void OBRFindKm(Args _args)
{
    dialog                           d;
    dialogField                    Depart,Arrivee;
    Name                           VilleDepart,VilleArrivee;
    Str                                url,xml;
    System.Net.WebClient  webClient = new System.Net.WebClient();
    XMlDocument              doc;
    XMLNodeList              Distance;
    XMLNode                    node;
    real                                totaldistance;
    ;
    d = new dialog();

    Depart = d.addField(extendedTypeStr(Name));
    Depart.label("Départ");

    Arrivee = d.addField(extendedTypeStr(Name));
    Arrivee.label("@SYS14181");

    d.run();

    VilleDepart = Depart.value();
    VilleArrivee = Arrivee.value();

    if(VilleDepart != "" && VilleArrivee != "")
        {
             url = "http://maps.google.com/maps/api/directions/xml?language=fr&origin="+VilleDepart+"&destination="+VilleArrivee+"&sensor=false";
             xml = webClient.DownloadString(url);
             doc = XMLDocument::newXml(xml);
             Distance = doc.selectNodes('//distance');
             node = Distance.nextNode();

            if(d.closedOk())
                {
                     while(node)
                        {
                            totalDistance = any2real(node.selectSingleNode('value').text());
                            node = Distance.nextNode();
                        }
                    box::info((strfmt("%1 %2 %3","Distance totale:",totalDistance/1000,"km")));
                }
            else
                {
                    box::info("@SYS93289");
                }
        }
    else
        {
            box::info("le point de départ et/ou le point d'arrivé sont mal renseignés");
        }
}

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.