PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV Mobile 2024 → New Procedure WS CEP Rota
New Procedure WS CEP Rota
Débuté par adrianoboller, 18 nov. 2014 13:36 - 3 réponses
Membre enregistré
3 651 messages
Popularité : +175 (223 votes)
Posté le 18 novembre 2014 - 13:36
ProcedureWS_CEP_Rota(LOCALOrigem,LOCALDestino,LOCALDebugSN)

//Origem ="dr goulin 1699 curitiba PR"
//Destino = "jose lopacinsk 500 curitiba PR"

IFGloDebugSN="S"THEN
DebugSN="S"
END



IFOrigem<>""ANDDestino=""THEN
Destino=Origem
END

nVirgula isint=0

//VARIAIVEIS
nID_Numero isint=1
nID_Endereco isint=1
nID_Bairro01 isint=1
nID_Bairro02 isint=1
nID_Cidade01 isint=1
nID_Cidade02 isint=1
nID_Estado isint=1
nID_Pais isint=1
nID_CEP isint=1
nQTD_ADDRESS_COMPONENT isint=0

//Limpa variaveis
//Endereço de Origem
GloVoceEnderecoLongo="ERRO"
GloDestinoEnderecoLongo="ERRO"
GloVoceLatitude=0
GloVoceLongitude=0
GloDestinoLatitude=0
GloDestinoLongitude=0

//Norte
GloLatitudeNorte=""
GloLongitudeNorte=""

//Sul
GloLatitudeSul=""
GloLongitudeSul=""

//Tempo
GloTempoDestino=""
GloTempoDestinoText=""
GloTempoTaxi=""

//Distancia
GloDistanciaDestino=""
GloDistanciaDestinoText=""
GloDistanciaTaxi=""

//Rota
//GloDebugSN, GloVoceEnderecoLongo, GloVoceEndereco, GloDestinoEnderecoLongo, GloDestinoEndereco, GloTempoDestino, GloTempoDestinoText, GloTempoTaxi, GloDistanciaDestino, GloDistanciaDestinoText, GloDistanciaTaxi, GloVoceLatitude, GloVoceLongitude, GloDestinoLatitude, GloDestinoLongitude, GloLatitudeNorte, GloLongitudeNorte, GloLatitudeSul, GloLongitudeSul is string

//Origem
//LocEnderecoOrigem, LocEnderecoCurtoOrigem, LocNumeroOrigem, LocBairro01Origem, LocBairro02Origem, LocCidade01Origem, LocCidade02Origem, LocEstadoOrigem, LocPaisOrigem, LocCepOrigem, LocLatitudeOrigem, LocLongitudeOrigem, LocLatitudeOrigemNorte, LocLongitudeOrigemNorte, LocLatitudeOrigemSul, LocLongitudeOrigemSul is string = ""

//Destino
//LocEnderecoDestino, LocEnderecoCurtoDestino, LocNumeroDestino, LocBairro01Destino, LocBairro02Destino, LocCidade01Destino, LocCidade02Destino, LocEstadoDestino, LocPaisDestino, LocCepDestino, LocLatitudeDestino, LocLongitudeDestino, LocLatitudeDestinoNorte, LocLongitudeDestinoNorte, LocLatitudeDestinoSul, LocLongitudeDestinoSul is string = ""


ok isboolean=False

IFOrigem<>""ANDDestino<>""

ChangeCharset(charsetOccidental)// SEM ACENTO

Origem=Replace(Origem," ","+")

Origem=Capitalize(WS_RemoveAcentos(Origem))

Destino=Replace(Destino," ","+")

Destino=Capitalize(WS_RemoveAcentos(Destino))

//Aceita endereço e lat e long na origem e destino
UrlRota isstring="http://maps.googleapis.com/maps/api/directions/xml?origin="+Origem+"&destination="+Destino+"&sensor=false&mode=driving"

IFDebugSN="S"THEN
Info("URL Busca Origem Google",UrlRota)
END
ok=HTTPRequest(UrlRota)


//Rota
IFok=TrueTHEN

XmlResultado isstring=WS_Android_IOS_HTTPGetResult()

IFPositionOccurrence(XmlResultado,"<status>OK</status>",firstRank,FromBeginning) >0ORPositionOccurrence(XmlResultado,"<status>ok</status>",firstRank,FromBeginning) >0



IFLength(XmlResultado) >0THEN

//Point Market
//---------------------------------------------------------------------------------------------------------//
GloRotaEncode=XmlResultado
nInicioPoint isint=PositionOccurrence(XmlResultado,"<copyrights>",firstRank,FromBeginning)
GloRotaEncode=Middle(XmlResultado,nInicioPoint,Length(XmlResultado))
nInicioPoint=PositionOccurrence(GloRotaEncode,"<points>",firstRank,FromBeginning)+Length("<points>")
nFinalPoint isint=PositionOccurrence(GloRotaEncode,"</points>",firstRank,FromBeginning)
GloRotaEncode=Middle(GloRotaEncode,nInicioPoint,nFinalPoint-nInicioPoint)
//---------------------------------------------------------------------------------------------------------//

IFDebugSN="S"
Info("POINT",GloRotaEncode,"",XmlResultado)
END

//Nao deve remover o acento antes do endecode
XmlResultado=WS_RemoveAcentos(XmlResultado)// retirou caracteres especiais
//Nao deve remover o acento antes do endecode

sXmlResultadoRecorte isstring=XmlResultado

//IMPORTANTE LIMPAR O XML

XmlResultado=WS_RemoveCaracteresRota(XmlResultado)// retirou os steps

IFDebugSN="S"THEN
Info("Retorno XML Busca Origem",XmlResultado)
END
//Corta inicio
//////////////////////////////////////////////////////////////////////////////////////
nInicio isint=PositionOccurrence(XmlResultado,"</step>",lastRank,FromBeginning) +7
XmlResultado=Middle(XmlResultado,nInicio,Length(XmlResultado))
XmlResultado="<leg>"+XmlResultado

//Corta fim
nFim isint=PositionOccurrence(XmlResultado,"</leg>",firstRank,FromBeginning) +5
XmlResultado=Middle(XmlResultado,1,nFim)
//////////////////////////////////////////////////////////////////////////////////////


IFIniOSMode() =TrueTHEN

NoXml isstring=XMLExtractString(XmlResultado,"leg")

//Endereço de Origem
GloVoceEnderecoLongo=XMLExtractString(NoXml,"start_address")
GloVoceEnderecoLongo=Capitalize(GloVoceEnderecoLongo)

//Endereço de Destino
GloDestinoEnderecoLongo=XMLExtractString(NoXml,"end_address")
GloDestinoEnderecoLongo=Capitalize(GloDestinoEnderecoLongo)

//Tempo
NoXml1 isstring=XMLExtractString(NoXml,"duration")
GloTempoDestino=XMLExtractString(NoXml1,"value")
GloTempoDestinoText=XMLExtractString(NoXml1,"text")
GloTempoTaxi=GloTempoDestino

//Distancia
NoXml1=XMLExtractString(NoXml,"distance")
GloDistanciaDestino=XMLExtractString(NoXml1,"value")
GloDistanciaDestinoText=XMLExtractString(NoXml1,"text")
GloDistanciaTaxi=GloDistanciaDestino

//Origem
NoXml1=XMLExtractString(NoXml,"start_location")
IFVal(XMLExtractString(NoXml1,"lat"))<0
GloVoceLatitude=XMLExtractString(NoXml1,"lat")
GloVoceLongitude=XMLExtractString(NoXml1,"lng")
END

//Destino
NoXml1=XMLExtractString(NoXml,"end_location")
IFVal(XMLExtractString(NoXml1,"lat")) <0THEN
GloDestinoLatitude=XMLExtractString(NoXml1,"lat")
GloDestinoLongitude=XMLExtractString(NoXml1,"lng")
END


ELSE IFInAndroidMode() =True


//XML Leitura
XmlDoc02 isXMLDocument
XmlDoc02=XMLOpen(XmlResultado,fromString)

//Endereço de Origem
GloVoceEnderecoLongo=XmlDoc02.leg.start_address
GloVoceEnderecoLongo=Capitalize(GloVoceEnderecoLongo)

//Endereço de Destino
GloDestinoEnderecoLongo=XmlDoc02.leg.end_address
GloDestinoEnderecoLongo=Capitalize(GloDestinoEnderecoLongo)

//Tempo
GloTempoDestino=XmlDoc02.leg.duration.value
GloTempoDestinoText=XmlDoc02.leg.duration.text
GloTempoTaxi=GloTempoDestino

//Distancia
GloDistanciaDestino=XmlDoc02.leg.distance.value
GloDistanciaDestinoText=XmlDoc02.leg.distance.text
GloDistanciaTaxi=GloDistanciaDestino

//Origem
IFXmlDoc02.leg.start_location.lat<0
GloVoceLatitude=XmlDoc02.leg.start_location.lat
GloVoceLongitude=XmlDoc02.leg.start_location.lng
END

//Destino
IFXmlDoc02.leg.end_location.lat<0THEN
GloDestinoLatitude=XmlDoc02.leg.end_location.lat
GloDestinoLongitude=XmlDoc02.leg.end_location.lng
END


END

END

ELSE
GloDestinoEndereco=""
GloDestinoEnderecoLongo=""

GloTempoDestino=""
GloDistanciaDestino=""
END

END


END



IFDebugSN="S"THEN
Info(GloRotaEncode)
Info("Origem:",GloVoceEnderecoLongo,GloVoceEndereco,"","Destino:",GloDestinoEnderecoLongo,GloDestinoEndereco,"","Tempo: "+GloTempoDestino,"Distancia: "+GloDistanciaDestino,"","Latitude Origem: "+GloVoceLatitude,"Longitute Origem: "+GloVoceLongitude,"","Latitude Destino: "+GloDestinoLatitude,"Longitude Destino: "+GloDestinoLongitude)
END

////Exemplo: Curitiba - Parana =>>> ( - )
IFQtdeOccurrence(GloVoceEnderecoLongo," - ") =1
GloVoceEndereco=""
GloVoceNumero=""
GloVoceEnderecoLongo="ERRO"
GloVoceLatitude=0
GloVoceLongitude=0
END
////Exemplo: Curitiba - Parana =>>> ( - )
IFQtdeOccurrence(GloDestinoEnderecoLongo," - ") =1
GloDestinoEndereco=""
GloDestinoNumero=""
GloDestinoEnderecoLongo="ERRO"
END
IFDebugSN="S"
IFGloVoceEnderecoLongo="ERRO"ORGloDestinoEnderecoLongo="ERRO"
Info("Endereço inválido")
END
END

RESULT(GloVoceEnderecoLongo)
>
Membre enregistré
3 651 messages
Popularité : +175 (223 votes)
Posté le 25 avril 2017 - 20:43
COMPLEMENTO:

https://forum.pcsoft.fr/fr-FR/pcsoft.br.windev/1693-mapadditinerary-versao-21-ilimitada-multi-points-para-rotas-2310/read.awp

--
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 30 août 2017 - 05:09
//server
arr_Resultadosis array of string

//Declara webservice//

gsValorMemorizadois string=1//Necessario um valor

DeclareWebserviceContext(gsValorMemorizado)//Principal funcao que declara webservice//

DeclareWebserviceContext(arr_Resultados)//Principal funcao que declara webservice//




ProcedureWs_BuscaEndereco(Token,Endereco)

//Variaveis
arrResultadois array of string
okis boolean=False
Xis int=0
nTokenOkis int=0
sTabelais string="Enderecos"
Resultadois string=""
sErrois string=""
GloTokenis string=""

OkConnis boolean=False

OkConn=HConnectionOpen(MyHfsql)

ok=HExecuteQuery(QRY_Select_Cliente,hQueryWithoutHFCorrection,Token)

IFok=TrueTHEN

FOREACH QRY_Select_Cliente

IFHFound(QRY_Select_Cliente) =TrueANDToken=QRY_Select_Cliente.TokenTHEN

GloToken=QRY_Select_Cliente.Token

ELSE

GloToken=""

END

END

END

//Code
IFToken<>""ANDToken=GloToken

IFOkConn=TrueTHEN

ok=HExecuteQuery(QRY_Select_Cliente,MyHfsql,hQueryWithoutHFCorrection,Token)

IFok=TrueTHEN

FOREACH QRY_Select_Cliente

IFHFound(QRY_Select_Cliente) =TrueTHEN

ok=HExecuteQuery(QRY_Select_CEP,MyHfsql,hQueryWithoutCorrection,Endereco)

IFok=TrueTHEN

Resultado="<Xml><Retorno>"

FOREACH QRY_Select_CEP

IFHFound(QRY_Select_CEP) =TrueANDX=0

X+=1

Resultado+=ws_xml_registro_comeco(X)

Resultado+=ws_xml_registro_corpo(QRY_Select_CEP.Sequencial,"Sequencial")
Resultado+=ws_xml_registro_corpo(QRY_Select_CEP.LogradouroUpper,"LogradouroUpper")
Resultado+=ws_xml_registro_corpo(QRY_Select_CEP.LogradouroAbrev,"LogradouroAbrev")
Resultado+=ws_xml_registro_corpo(QRY_Select_CEP.Logradouro,"Logradouro")
Resultado+=ws_xml_registro_corpo(QRY_Select_CEP.LogradouroCompl,"LogradouroCompl")
Resultado+=ws_xml_registro_corpo(QRY_Select_CEP.Fonetica,"Fonetica")
Resultado+=ws_xml_registro_corpo(QRY_Select_CEP.LogradouroTipo,"LogradouroTipo")
Resultado+=ws_xml_registro_corpo(QRY_Select_CEP.CEP,"CEP")
Resultado+=ws_xml_registro_corpo(QRY_Select_CEP.Bairro,"Bairro")
Resultado+=ws_xml_registro_corpo(QRY_Select_CEP.BairroAbrev,"BairroAbrev")
Resultado+=ws_xml_registro_corpo(QRY_Select_CEP.IDCidade,"IDCidade")
Resultado+=ws_xml_registro_corpo(QRY_Select_CEP.Cidade,"Cidade")
Resultado+=ws_xml_registro_corpo(QRY_Select_CEP.SubCidadeAbrev,"SubCidadeAbrev")
Resultado+=ws_xml_registro_corpo(QRY_Select_CEP.SubCidade,"SubCidade")
Resultado+=ws_xml_registro_corpo(QRY_Select_CEP.CodIBGECid,"CodIBGECid")
Resultado+=ws_xml_registro_corpo(QRY_Select_CEP.CodIBGEUF,"CodIBGEUF")
Resultado+=ws_xml_registro_corpo(QRY_Select_CEP.UF,"UF")
Resultado+=ws_xml_registro_corpo(QRY_Select_CEP.Pais,"Pais")
Resultado+=ws_xml_registro_corpo(QRY_Select_CEP.LogradouroIniciais,"LogradouroIniciais")
Resultado+=ws_xml_registro_corpo(QRY_Select_CEP.NumeroInicial,"NumeroInicial")
Resultado+=ws_xml_registro_corpo(QRY_Select_CEP.NumeroFinal,"NumeroFinal")
Resultado+=ws_xml_registro_corpo(QRY_Select_CEP.DMSLatitude,"DMSLatitude")
Resultado+=ws_xml_registro_corpo(QRY_Select_CEP.DMSLongitude,"DMSLongitude")
Resultado+=ws_xml_registro_corpo(QRY_Select_CEP.GDLatitude,"GDLatitude")
Resultado+=ws_xml_registro_corpo(QRY_Select_CEP.GDLongitude,"GDLongitude")

Resultado+=ws_xml_registro_final()

END

END

IFX=0THEN
Resultado=ws_zero_registros(sTabela)
END

Resultado+="<TOTAL>"+X+"</TOTAL>"//Total de Registros para usar em barras de progresso
Resultado+="</Retorno></Xml>"

ELSE

Resultado+="<Error>Erro 002 tabela<Error>"

END

ELSE

Resultado+="<Error>Erro 003 tabela<Error>"

END


END


ELSE

Resultado+="<Error>Erro 004 tabela<Error>"

END


ELSE

Resultado+="<Error>Erro 005 Conexao<Error>"

END

ipis string=WebserviceClientIPAddress(False)
//Verdadeiro para recuperar o endereço inicial especificado no cabeçalho HTTP,
//Falso (valor padrão) para recuperar o Endereco ip na variável de ambiente "REMOTE_ADDR" definida pelo servidor da Web.

ok=HExecuteQuery(QRY_Insert_Log,hQueryWithoutHFCorrection,DateSys()+TimeSys(),ip,Token,Endereco)

HReset(QRY_Select_CEP)// <----- Limpar atenção

HReset(QRY_Select_Cliente)// <----- Limpar atenção

HConnectionClose(ConnNativa)

ELSE

Resultado+="<Error>Token invalido<Error>"

END

nTamanhois int=Length(Resultado)

Add(arrResultado,Resultado)

RESULT(arrResultado)



SELECT
enderecoscorreios.Sequencial AS Sequencial,
enderecoscorreios.LogradouroUpper AS LogradouroUpper,
enderecoscorreios.LogradouroAbrev AS LogradouroAbrev,
enderecoscorreios.Logradouro AS Logradouro,
enderecoscorreios.LogradouroCompl AS LogradouroCompl,
enderecoscorreios.Fonetica AS Fonetica,
enderecoscorreios.LogradouroTipo AS LogradouroTipo,
enderecoscorreios.CEP AS CEP,
enderecoscorreios.Bairro AS Bairro,
enderecoscorreios.BairroAbrev AS BairroAbrev,
enderecoscorreios.IDCidade AS IDCidade,
enderecoscorreios.Cidade AS Cidade,
enderecoscorreios.SubCidadeAbrev AS SubCidadeAbrev,
enderecoscorreios.SubCidade AS SubCidade,
enderecoscorreios.CodIBGECid AS CodIBGECid,
enderecoscorreios.CodIBGEUF AS CodIBGEUF,
enderecoscorreios.UF AS UF,
enderecoscorreios.Pais AS Pais,
enderecoscorreios.LogradouroIniciais AS LogradouroIniciais,
enderecoscorreios.NumeroInicial AS NumeroInicial,
enderecoscorreios.NumeroFinal AS NumeroFinal,
enderecoscorreios.DMSLatitude AS DMSLatitude,
enderecoscorreios.DMSLongitude AS DMSLongitude,
enderecoscorreios.GDLatitude AS GDLatitude,
enderecoscorreios.GDLongitude AS GDLongitude,
MATCH(enderecoscorreios.LogradouroUpper,enderecoscorreios.LogradouroAbrev,enderecoscorreios.Logradouro,enderecoscorreios.LogradouroCompl,enderecoscorreios.Fonetica,enderecoscorreios.LogradouroTipo,enderecoscorreios.CEP,enderecoscorreios.Bairro,enderecoscorreios.BairroAbrev,enderecoscorreios.Cidade,enderecoscorreios.SubCidadeAbrev,enderecoscorreios.SubCidade,enderecoscorreios.UF,enderecoscorreios.Pais,enderecoscorreios.LogradouroIniciais)AGAINST({ParamKFulltext})AS FullTextPertinence
FROM
enderecoscorreios
WHERE
FullTextPertinence> {ParamFullTextPertinence}
ORDER BY
FullTextPertinence DESC




SELECT
clientes.id AS id,
clientes.Nome AS Nome,
clientes.Email AS Email,
clientes.Celular AS Celular,
clientes.Token AS Token
FROM
clientes
WHERE
clientes.Token= {ParamToken}




INSERT INTO wslog
(
datahora,
ip,
Token,
acao
)
VALUES
(
{Paramdatahora},
{Paramip},
{ParamToken},
{Paramacao}
)


--
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 09 juin 2018 - 02:18
Teste agora mesmo

http://wxmagazine.pcscloud.net/WSCEP_WEB

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