ATOUTFOX
COMMUNAUTÉ FRANCOPHONE DES PROFESSIONNELS FOXPRO
Visual FoxPro : le développement durable

Forum AtoutFox : Re: distance entre deux adresses avec google maps   

Sujet

rss Flux RSS des derniers messages

Vous devez vous identifier pour pouvoir poser une question ou répondre.

sam. 18 février 2017, 09h18

Koen
Pays-Bas Pays-Bas

atoutfox.public.association

Re: distance entre deux adresses avec google maps

Marc,
Mike propose de utiliser une code qui donne le route totale, j'ai repondu que je cherche une code qui me donne que le distance et le temps de voyage entre deux adresses, voyage par voiture.
En suite Mike à corriger une code qui donne ça:
Lparameter tcAddress1, tcAdresse2
Local lcAddress1, lcAddress2, lcURL, loHTTP, lcResult
if vartype(tcAddress1='C'
lcAddress1 = m.tcAddress1
else
*!*  return .F.   &&handicapé enfin de mode de teste
endif

if vartype(tcAddress2='C'
lcAddress2 = m.tcAddress2
else
*!*  return .F. &&handicapé enfin de mode en teste
endif

*!* teste
lcAddress2 = "Grasmarktstraat 100, Brussel"
lcAddress1 = "De Keizerlei 12, Antwerpen"
*!* valeurs trouvé par GoogleMaps en internet:
*!* 56 min, 52,7 km

If !Empty(lcAddress1) Or !Empty(lcAddress2)

      lcURL= "http://maps.google.be/maps/api/distancematrix/xml?origins=";+lcAddress1+"&destinations="+lcAddress2+"&mode=driving&language=nl-BE&sensor=false"
      loHTTP = Createobject("MSXML2.XMLHTTP")
      loHTTP.Open("GET", lcURL, .F.)
      loHTTP.Send
      oXMLDOM = loHTTP.responseXML
      lcResult=(loHTTP.ResponseText)
      oOrigine = oXMLDOM.selectNodes("//origin_address")
      If "NOT_FOUND" $ lcResult Then
      Else        &&! NOT_FOUND = FOUND
            llFound = .T.
      Endif   && "NOT_FOUND" $ lcResult

Endif       &&if !EMPTY(cAddress1)

If llFound

      lcDeparture  = oOrigine.Item(0).Text
      lcArrival0 = oXMLDOM.selectNodes("//destination_address")
      lcArrival = lcArrival0.Item(0).Text
      lcStatus0  = oXMLDOM.selectNodes("//status")
      lcStatus = lcStatus0.Item(0).Text
      lcDuration0 = oXMLDOM.selectNodes("//duration / text")
      lcDuration = lcDuration0.Item(0).Text
      lcDistance0 = oXMLDOM.selectNodes("//distance / text")
      lcDistance = lcDistance0.Item(0).Text

Endif


code functionne, mais bien que le code mentionne bien 'mode=driving' il semble que le distance et le duration est messuré par air en mode ligne droîte. Voir les examples donne entre les deux adresses par teste.

Coordialement,

Koen

Permalink : http://www.atoutfox.org/nntp.asp?ID=0000018112
18 324 messages dans le forum • Liste complète des messages

Publicité

Les pubs en cours :

www.atoutfox.org - Site de la Communauté Francophone des Professionnels FoxPro - v3.4.0 - © 2004-2017.
Cette page est générée par un composant COM+ développé en Visual FoxPro 9.0