PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 25 → WX - Nova procedure WS_RotasGoogleMaps
WX - Nova procedure WS_RotasGoogleMaps
Débuté par BOLLER, 17 juil. 2017 22:31 - 1 réponse
Membre enregistré
3 651 messages
Popularité : +175 (223 votes)
Posté le 17 juillet 2017 - 22:31
Procedure WS_RotasGoogleMaps(enderecoOrigem is string, enderecoDestino is string)

Resultado is string

arrayResultadoLocal is array of string

IF enderecoOrigem = "" OR enderecoDestino = "" THEN
RESULT(Null)
END

enderecoOrigem = Replace(enderecoOrigem," ","+")
enderecoDestino = Replace(enderecoDestino," ","+")
enderecoOrigem = NoAccent(NoSpace(enderecoOrigem))
enderecoDestino = NoAccent(NoSpace(enderecoDestino))

HTTPCreateForm("GoogleMaps")
HTTPAddParameter("GoogleMaps","origin", enderecoOrigem)
HTTPAddParameter("GoogleMaps","destination", enderecoDestino)
HTTPAddParameter("GoogleMaps","language", "pt-BR")
HTTPAddParameter("GoogleMaps","region", "br")
HTTPAddParameter("GoogleMaps","units", "metric")

HTTPAddParameter("GoogleMaps","key","AIzaSyDbSVKYPwB1a-_vPbDzAr6LgAfIj4iW2hc") //CHAVE GOOGLE

cMyRequest is a httpRequest
cMyRequest..URL = "https://maps.googleapis.com/maps/api/directions/xml"
cMyRequest..Method = httpGet

cMyResponse is a httpResponse = HTTPSendForm("GoogleMaps", cMyRequest)

IF cMyResponse..StatusCode <> 200 THEN // Se não funcionou
RESULT(Null)
END

xmlGoogle is a xmlDocument = XMLOpen(cMyResponse..Content, fromString)
IF NOT xmlGoogle.DirectionsResponse.status..Text ~= "OK" THEN
RESULT(Null)
END

//Lendo nos unicos

Resultado = "<Xml><Resultado><NoXml>"
Resultado += "<enderecoOrigem>" + xmlGoogle.DirectionsResponse.route.leg.start_address + "</enderecoOrigem>"
Resultado += "<enderecoDestino>" + xmlGoogle.DirectionsResponse.route.leg.end_address + "</enderecoDestino>"
Resultado += "<durationvalue>" + xmlGoogle.DirectionsResponse.route.leg.duration.value + "</durationvalue>"
Resultado += "<durationtext>" + xmlGoogle.DirectionsResponse.route.leg.duration.text + "</durationtext>"
Resultado += "<distancevalue>" + xmlGoogle.DirectionsResponse.route.leg.distance.value + "</distancevalue>"
Resultado += "<distancetext>" + xmlGoogle.DirectionsResponse.route.leg.distance.text + "</distancetext>"
Resultado += "<polyline>" + xmlGoogle.DirectionsResponse.route.overview_polyline.points + "</polyline>"
Resultado += "<latitudeOrigem>" + xmlGoogle.DirectionsResponse.route.leg.start_location.lat + "</latitudeOrigem>"
Resultado += "<longitudeOrigem>" + xmlGoogle.DirectionsResponse.route.leg.start_location.lng + "</longitudeOrigem>"
Resultado += "<latitudeDestino>" + xmlGoogle.DirectionsResponse.route.leg.end_location.lat + "</latitudeDestino>"
Resultado += "<longitudeDestino>" + xmlGoogle.DirectionsResponse.route.leg.end_location.lng + "</longitudeDestino>"

//Loop nos nós do xml das instrucoes de rota
Contador is int = 1
FOR EACH legNode OF xmlGoogle.DirectionsResponse.route.leg
IF legNode..Name = "step" THEN
HTML is string = legNode.html_instructions
Distancia is int = legNode.distance.value
Resultado += "<instrucao id="+ Contador + ">" + HTML + " [" + Distancia + "]" + "</instrucao>"
Contador++
END
END

Resultado += "</NoXml></Resultado></Xml>"

Add(arrayResultadoLocal, Resultado)

RESULT(arrayResultadoLocal)


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Membre enregistré
3 651 messages
Popularité : +175 (223 votes)
Posté le 17 juillet 2017 - 22:32
<Xml><Resultado><NoXml><enderecoOrigem>R. Clávio Molinari, 1029 - Capão da Imbuia, Curitiba - PR, 82810-210, Brasil</enderecoOrigem><enderecoDestino>Av. Victor Ferreira do Amaral, 100 - Tarumã, Curitiba - PR, 82810-350, Brasil</enderecoDestino><durationvalue>444</durationvalue><durationtext>7 minutos</durationtext><distancevalue>3509</distancevalue><distancetext>3,5 km</distancetext><polyline>zygzCjfjkHsFfPaEiBaEiB_EeBcEeBmC|HgA`DkLeF{DcBgCoAg@JOzCEfBc@lIaA~Re@pIi@dLIl@IxAUnFMlBm@fNc@hIIxBQxCCjAOnCIvA</polyline><latitudeOrigem>-25.4404606</latitudeOrigem><longitudeOrigem>-49.2095038</longitudeOrigem><latitudeDestino>-25.4283270</latitudeDestino><longitudeDestino>-49.2300018</longitudeDestino><instrucao id=1>Siga na direção <b>noroeste</b> na <b>R. Clávio Molinari</b> em direção à <b>R. João Ponciano Borges</b> [308]</instrucao><instrucao id=2>Vire à <b>direita</b> na 2ª rua transversal para <b>R. Pastor Manoel Virgínio de Souza</b> [479]</instrucao><instrucao id=3>Vire à <b>esquerda</b> na <b>Rua Professora Antonia Reginato Vianna</b> [269]</instrucao><instrucao id=4>Vire à <b>direita</b> na <b>R. Mal. José Agostinho dos Santos</b> [467]</instrucao><instrucao id=5>Vire à <b>esquerda</b> na <b>Av. Victor Ferreira do Amaral</b><div style="font-size:0.9em">O destino estará à direita</div> [1986]</instrucao></NoXml></Resultado></Xml>


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/