|
Bem Vindo, Visitante
|
Todos os Fórums
ADVPL
|
Imprimir
Enviar Para um Amigo Precisa estar Logado
|
|
|
Assunto: |
Calculo de km entre dois potos |
|
Versão: |
12 |
|
Plataforma: |
Microsoft |
Complemento: |
|
|
DB: |
SQL Server |
Complemento: |
|
|
|
|
|
Mensagem do
INOVAT
em 08/10/2018, 13:52 h
Local: SP Registro: 27/09/2018 Postagens: 14 |
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 |
|
|
Mensagem do
AIRTONLIRA
em 08/10/2018, 14:23 h
Local: PB Registro: 18/08/2005 Postagens: 27 |
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 ,,,, |
|
|
Mensagem do
REISM01
em 08/10/2018, 14:29 h
Local: MG Registro: 13/10/2005 Postagens: 147 |
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 |
|
|
Mensagem do
INOVAT
em 08/10/2018, 16:22 h
Local: SP Registro: 27/09/2018 Postagens: 14 |
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
|
|
Para postar no Fórum você precisa efetuar o seu login ou se registrar
|
|