Imprimi Página | Fechar janela |
Calculo de km entre dois potos Impresso de: Helpfacil - Portal do conhecimento Nome do Forum: ADVPL Descrição do Forum: Dúvidas sobre a programação em ADVPL URL:http://www.helpfacil.com.br/display_topic_threads.asp?ForumID=1&TopicID=42252 Data da Impressão: sexta-feira, 19 de abril de 2024 at 23:32 Topico: Calculo de km entre dois potos Postado por: INOVAT Assunto: Calculo de km entre dois potos Data Postagem: segunda-feira, 8 de outubro de 2018 at 13:52 Galera, Tenho a latitude e longitude de dois pontos, dois endereços de clientes e preciso calcular a distância entre eles em Kilometros, a fim de cobrança de frete por kilometro rodado, no advpl tem alguma função que faça isso, ou alguém conhece alguma maneira de obter essa kilometragem ? Obrigado pela ajuda. Cmkas Respostas: Postado Por: AIRTONLIRA Data Postagem: segunda-feira, 8 de outubro de 2018 at 14:23 Eu fiz um Mashup para saber a distancia entre 2 pontos usando o google maps. Mas calcular o frete com base nisso é mais complicado. Por que tem que saber todos componentes do frete, se tem TDE, etc ,,,, Postado Por: REISM01 Data Postagem: segunda-feira, 8 de outubro de 2018 at 14:29 Clarice, Boa Tarde! Tudo bom ? Utilize o Metodo HttpGet: http://tdn.totvs.com/display/tec/HTTPGet Segue um Exemplo de um Colega (Crédito: Fernando Bueno - FB Solutions), utilizando o HttpGet e API Google para calcular Distancia em Kms: #INCLUDE "XMLXFUN.CH" #INCLUDE "RWMAKE.CH" /*/{Protheus.doc} GMapsDist //TODO Retorna distância entre 2 pontos através da APi Google Maps @author Fernando Bueno @since 27/06/2017 @version 1.0 @param cOrigem, characters, descricao @param cDestino, characters, descricao @type function /*/ User Function GMapsDist(cOrigem, cDestino) Local cError := "" Local cWarning := "" Local oScript Local nRet cEnd := "http://maps.googleapis.com/maps/api/directions/xml?origin=" + cOrigem + "&destination=" + cDestino cEnd := strtran(cEnd, " ", "%20") retXML := HTTPGET(cEnd) //Gera o Objeto XML ref. ao script oScript := XmlParser( retXML, "_", @cError, @cWarning ) //Caso não retornar valor, o usuário informará manualmente através do setKM() If oScript:_DirectionsResponse:_status:TEXT == "ZERO_RESULTS" .OR. oScript:_DirectionsResponse:_status:TEXT <> "OK" nRet := 0 setKM() nRet := nGetKM //Do contrário, pode pegar o valor e gravar em sua tabela Else nRet := oScript:_DirectionsResponse:_route:_leg:_distance:_value:TEXT nRet := Round((Val(nRet)/1000),1) EndIf SAVE oScript XMLFILE "C:\Temp\dist.xml" Return nRet /*/{Protheus.doc} setKM //TODO Função utilizada para gravar manualmente a distância @author Fernando @since 27/06/2017 @version undefined @type function /*/ Static Function setKM() Static oDlgKM Static oButtonKM Static oGetKM Static nGetKM := 0 Static oSayKM1 Static oSayKM2 DEFINE MSDIALOG oDlgKM TITLE "Informe o KM" FROM 000, 000 TO 150, 400 COLORS 0, 16777215 PIXEL @ 009, 010 SAY oSayKM1 PROMPT "A distância entre Mun Origem e Mun Destino não foi encontrada" SIZE 192, 011 OF oDlgKM COLORS 0, 16777215 PIXEL @ 035, 010 SAY oSayKM2 PROMPT "Informe o KM manualmente:" SIZE 073, 009 OF oDlgKM COLORS 0, 16777215 PIXEL @ 033, 083 MSGET oGetKM VAR nGetKM SIZE 071, 010 OF oDlgKM COLORS 0, 16777215 PIXEL VALID nGetKM > 0 PICTURE "@E 9999.9" @ 054, 136 BUTTON oButtonKM PROMPT "Confirma" SIZE 052, 014 OF oDlgKM PIXEL ACTION Close(oDlgKM) ACTIVATE MSDIALOG oDlgKM Return Espero que te ajude. Boa Sorte ! Um forte abraço! Maurilio G. Reis. ReisM01 - reis.maurilio@gmail.com Postado Por: INOVAT Data Postagem: segunda-feira, 8 de outubro de 2018 at 16:22 Amigos, No exemplo do Google Maps são enviados duas Cidades, para retornar o KM. Não consigo visualizar o que tenho que mudar para enviar endereços ( Rua Inicial e Rua Final ) Obrigado pela ajuda. Cmkas |
Imprimir Página | Fechar Janela |