PERGUNTAS E RESPOSTAS
 
Bem Vindo, Visitante  Todos os Fórums
  ADVPL
Enviar para a impressoraImprimir  Enviar e-mail para um amigoEnviar Para um Amigo
Precisa estar Logado

Subject Assunto:
Calculo de km entre dois potos
Versão:
12
Plataforma:
Microsoft
Complemento:
DB:
SQL Server
Complemento:
LinkedIn
Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário INOVAT 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 Enviar e-mail Abrir o Perfil do usuário AIRTONLIRA 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 ,,,,

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário REISM01 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

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário INOVAT 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

 Mudar para Fórum

 

 

 
 
   
Pagina Principal Shopping PROTHEUS Tire suas duvidas Vagas Microsiga em todo Brasil Aprofunde seus conhecimentos Noticias Online Fale Conosco Pagina Principal