http://forum.pcsoft.fr/fr-FR/pcsoft.us.windevmobile/584-new-procedure-cep-rota/read.awp?hl=cep
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)
Nenhum comentário:
Postar um comentário