Posté le 18 septembre 2014 - 20:54
|
////////////////////////////////////////////////////////////////////////////////////////// //Desenvolvido por: Adriano Boller //18/09/2014 //adrianoboller@gmail.com skype adrianoboller //br.linkedin.com/in/adrianoboller //////////////////////////////////////////////////////////////////////////////////////////
//Procedures GoogleMaps and Uteis
PROCEDURE WS_CEP_Rota(LOCAL Origem, LOCAL Destino, LOCAL DebugSN)
//dr+goulin+1699+curitiba+PR //jose+lopacinsk+500+curitiba+PR
IF Origem <> "" AND Destino = "" THEN Destino = Origem END
nVirgula is int = 0
//VARIAIVEIS nID_Numero is int = 1 nID_Endereco is int = 1 nID_Bairro01 is int = 1 nID_Bairro02 is int = 1 nID_Cidade01 is int = 1 nID_Cidade02 is int = 1 nID_Estado is int = 1 nID_Pais is int = 1 nID_CEP is int = 1 nQTD_ADDRESS_COMPONENT is int = 0
//Limpa variaveis //Endereço de Origem GloVoceEnderecoLongo = "" GloDestinoEnderecoLongo = "" 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 is boolean = False
IF Origem <> "" AND Destino <> ""
ChangeCharset(charsetOccidental) // SEM ACENTO
Origem = Replace(Origem," ","+")
Origem = WS_RemoveAcentos(Origem)
Destino = Replace(Destino," ","+")
Destino = WS_RemoveAcentos(Destino)
//Aceita endereço e lat e long na origem e destino UrlRota is string = "http://maps.googleapis.com/maps/api/directions/xml…" //LOOP (3) ok = HTTPRequest(UrlRota) IF ok = True THEN //BREAK END //END
//Rota IF ok = True THEN
XmlResultado is string = HTTPGetResult(httpResult)
IF PositionOccurrence(XmlResultado,"<status>OK</status>",firstRank,FromBeginning) > 0 OR PositionOccurrence(XmlResultado,"<status>ok</status>",firstRank,FromBeginning) > 0
IF XmlResultado <> "" THEN
sXmlResultadoRecorte is string = XmlResultado
//Xml No final XmlDoc01 is xmlDocument XmlDoc01 = XMLOpen(sXmlResultadoRecorte,fromString)
//Norte GloLatitudeNorte = XmlDoc01.DirectionsResponse.route.bounds.northeast.lat GloLongitudeNorte = XmlDoc01.DirectionsResponse.route.bounds.northeast.lng
//Sul GloLatitudeSul = XmlDoc01.DirectionsResponse.route.bounds.southwest.lat GloLongitudeSul = XmlDoc01.DirectionsResponse.route.bounds.southwest.lng
//IMPORTANTE LIMPAR O XML XmlResultado = WS_RemoveAcentos(XmlResultado) // retirou caracteres especiais XmlResultado = WS_RemoveCaracteresRota(XmlResultado) // retirou os steps
//Corta inicio ////////////////////////////////////////////////////////////////////////////////////// nInicio is int = PositionOccurrence(XmlResultado,"</step>",lastRank,FromBeginning) + 7 XmlResultado = Middle(XmlResultado,nInicio,Length(XmlResultado)) XmlResultado = "<leg>"+XmlResultado
//Corta fim nFim is int = PositionOccurrence(XmlResultado,"</leg>",firstRank,FromBeginning) + 5 XmlResultado = Middle(XmlResultado,1,nFim) //////////////////////////////////////////////////////////////////////////////////////
//XML Leitura XmlDoc02 is xmlDocument 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 IF XmlDoc02.leg.start_location.lat < 0 //AND gnPlane = 1 THEN //nao pode alterar no plano 2
GloVoceLatitude = XmlDoc02.leg.start_location.lat LocLatitudeOrigem = GloVoceLatitude
GloVoceLongitude = XmlDoc02.leg.start_location.lng LocLongitudeOrigem = GloVoceLongitude
END
//Destino IF XmlDoc02.leg.end_location.lat < 0 THEN
GloDestinoLatitude = XmlDoc02.leg.end_location.lat
GloDestinoLongitude = XmlDoc02.leg.end_location.lng
END
END
ELSE GloDestinoEndereco = "" GloDestinoEnderecoLongo = ""
GloTempoDestino = "" GloDistanciaDestino = "" END
END
END
IF DebugSN = "S" OR GloDebugSN = "S" THEN Info("Origem:",GloVoceEnderecoLongo,GloVoceEndereco,"","Destino:",GloDestinoEnderecoLongo,GloDestinoEndereco,"","Tempo: "+GloTempoDestino,"Distancia: "+GloDistanciaDestino,"","Latitude Origem: "+GloVoceLatitude,"Longitute Origem: "+GloVoceLongitude,"","Latitude Destino: "+GloDestinoLatitude,"Longitude Destino: "+GloDestinoLongitude) Info("Origem:", LocEnderecoOrigem,"", LocEnderecoCurtoOrigem, LocNumeroOrigem, LocBairro01Origem, LocBairro02Origem, LocCidade01Origem, LocCidade02Origem, LocEstadoOrigem, LocPaisOrigem, LocCepOrigem,"", LocLatitudeOrigem, LocLongitudeOrigem,"", LocLatitudeOrigemNorte, LocLongitudeOrigemNorte, LocLatitudeOrigemSul, LocLongitudeOrigemSul) Info("Destino:", LocEnderecoDestino,"", LocEnderecoCurtoDestino, LocNumeroDestino, LocBairro01Destino, LocBairro02Destino, LocCidade01Destino, LocCidade02Destino, LocEstadoDestino, LocPaisDestino, LocCepDestino,"", LocLatitudeDestino, LocLongitudeDestino,"", LocLatitudeDestinoNorte, LocLongitudeDestinoNorte, LocLatitudeDestinoSul, LocLongitudeDestinoSul) END
//Exemplo: Curitiba - Parana --- ( - ) IF QtdeOccurrence(GloVoceEnderecoLongo," - ") = 1 GloVoceEndereco = "" GloVoceNumero = "" GloVoceEnderecoLongo = "ERRO" END IF QtdeOccurrence(GloDestinoEnderecoLongo," - ") = 1 GloDestinoEndereco = "" GloDestinoNumero = "" GloDestinoEnderecoLongo = "ERRO" END // if GloVoceEnderecoLongo = "ERRO" or GloDestinoEnderecoLongo = "ERRO" // Info("Endereço inválido") // END
RESULT(GloVoceEnderecoLongo)
-------------------------------------------------------------- -------------------------------------------------------------- -------------------------------------------------------------- //Desenvolvido por: Adriano Boller //18/09/2014 //adrianoboller@gmail.com skype adrianoboller //br.linkedin.com/in/adrianoboller
PROCEDURE WS_ExtrairEndereco(endereco)
IF GloDebugSN = "S" THEN NextTitle("Extrair Endereço") Info("WS_ExtrairEndereco",endereco) END
sRua, sNumero, sBairro, sCidade, sEstado, sPais, sCep is string = ""
IF endereco <> ""
endereco = Replace(endereco,"State Of", "")
//Separador - das 3 colunas arrSplitArray is array of strings StringToArray(endereco, arrSplitArray," - ") // FOR EACH string sExtracColunn, nRank of endereco SEPAREE by " - " // // add(arrSplitArray, sExtracColunn) // // END
IF ArrayCount(arrSplitArray) = 3
//Separador , da rua e numero arrSplitRuaNumeroArray is array of strings StringToArray(arrSplitArray[1], arrSplitRuaNumeroArray,",") // FOR EACH STRING sExtracEnd, nRank of arrSplitArray[1] SEPAREE by "," // // Add(arrSplitRuaNumeroArray, sExtracEnd) // // END
IF ArrayCount(arrSplitRuaNumeroArray) = 1
sRua = arrSplitRuaNumeroArray[1];
sNumero = "0";
ELSE IF ArrayCount(arrSplitRuaNumeroArray) = 2
sRua = arrSplitRuaNumeroArray[1];
IF PositionOccurrence(arrSplitRuaNumeroArray[2],"-",firstRank) > 0 THEN
arrSplitNumeroArray is array of strings StringToArray(arrSplitRuaNumeroArray[2], arrSplitNumeroArray,"-")
WHEN EXCEPTION IN Media is int = (Val(arrSplitNumeroArray[1]) + Val(arrSplitNumeroArray[2])) / 2 DO sNumero = 0 ELSE sNumero = Media END
ELSE
sNumero = arrSplitRuaNumeroArray[2];
END
END
///// //Separador , do bairro e cidade arrSplitBairroCidadeArray is array of strings StringToArray(arrSplitArray[2], arrSplitBairroCidadeArray,",") // FOR EACH STRING sExtracBairroCidade, nRank of arrSplitArray[2] SEPAREE by "," // // Add(arrSplitBairroCidadeArray, sExtracBairroCidade) // // END
IF ArrayCount(arrSplitBairroCidadeArray) = 2
sBairro =arrSplitBairroCidadeArray[1]; sCidade = arrSplitBairroCidadeArray[2];
ELSE IF (ArrayCount(arrSplitBairroCidadeArray) = 3)
sBairro = arrSplitBairroCidadeArray[1]; sCidade = arrSplitBairroCidadeArray[3];
ELSE
sBairro = ""; sCidade = "";
END
//Separador , do bairro e cidade arrSplitEstadoCepPaisArray is array of strings StringToArray(arrSplitArray[3], arrSplitEstadoCepPaisArray,",") // FOR EACH STRING sExtracEstadoCepPais, nRank of arrSplitArray[3] SEPAREE by "," // // Add(arrSplitEstadoCepPaisArray,sExtracEstadoCepPais) // // END
IF ArrayCount(arrSplitEstadoCepPaisArray) = 2
sEstado = arrSplitEstadoCepPaisArray[1]; sPais = arrSplitEstadoCepPaisArray[2]; sCep = ""
ELSE IF ArrayCount(arrSplitEstadoCepPaisArray)= 3
sEstado = arrSplitEstadoCepPaisArray[1]; sCep = arrSplitEstadoCepPaisArray[2]; sPais = arrSplitEstadoCepPaisArray[3]; ELSE
sEstado = "" sCep = "" sPais = ""
END
END
END
//Replace Estado sEstado = Capitalize(Clip(sEstado)) IF sEstado <> ""
IF sEstado = "Acre" THEN sEstado = "AC" ELSE IF sEstado = "Alagoas" THEN sEstado = "AL" ELSE IF sEstado = "Amazonas" THEN sEstado = "AM" ELSE IF sEstado = "Amapa" THEN sEstado = "AP" ELSE IF sEstado = "Bahia" THEN sEstado = "BA" ELSE IF sEstado = "Ceara" THEN sEstado = "CE" ELSE IF sEstado = "Distrito Federal" THEN sEstado = "DF" ELSE IF sEstado = "Espirito Santo" THEN sEstado = "ES" ELSE IF sEstado = "Goias" THEN sEstado = "GO" ELSE IF sEstado = "Maranhao" THEN sEstado = "MA" ELSE IF sEstado = "Minas Gerais" THEN sEstado = "MG" ELSE IF sEstado = "Mato Grosso do Sul" THEN sEstado = "MS" ELSE IF sEstado = "Mato Grosso" THEN sEstado = "MT" ELSE IF sEstado = "Parana" THEN sEstado = "PR" ELSE IF sEstado = "Para" THEN sEstado = "PA" ELSE IF sEstado = "Paraiba" THEN sEstado = "PB" ELSE IF sEstado = "Pernambuco" THEN sEstado = "PE" ELSE IF sEstado = "Piaui" THEN sEstado = "PI" ELSE IF sEstado = "Rio de Janeiro" THEN sEstado = "RJ" ELSE IF sEstado = "Rio Grande DO Norte" THEN sEstado = "RN" ELSE IF sEstado = "Rondonia" THEN sEstado = "RO" ELSE IF sEstado = "Roraima" THEN sEstado = "RR" ELSE IF sEstado = "Rio Grande DO Sul" THEN sEstado = "RS" ELSE IF sEstado = "Santa Catarina" THEN sEstado = "SC" ELSE IF sEstado = "Sergipe" THEN sEstado = "SE" ELSE IF sEstado = "Sao Paulo" THEN sEstado = "SP" ELSE IF sEstado = "Tocantins" THEN sEstado = "TO" END
END
arrResult is array of strings
Add(arrResult, Capitalize(Clip(sRua))) Add(arrResult, Clip(sNumero)) Add(arrResult, Capitalize(Clip(sBairro))) Add(arrResult, Capitalize(Clip(sCidade))) Add(arrResult, Capitalize(Clip(sEstado))) Add(arrResult, Clip(sCep)) Add(arrResult, Capitalize(Clip(sPais)))
IF GloDebugSN = "S" THEN NextTitle("Extrair Endereço") Info(arrResult[1],arrResult[2],arrResult[3],arrResult[4],arrResult[5],arrResult[6],arrResult[7]) END
RESULT arrResult
------------------------------------------------------------------- ------------------------------------------------------------------- ------------------------------------------------------------------- //Desenvolvido por: Adriano Boller //18/09/2014 //adrianoboller@gmail.com skype adrianoboller //br.linkedin.com/in/adrianoboller
PROCEDURE WS_RemoveAcentos(LOCAL Texto)
ChangeCharset(charsetOccidental) // SEM ACENTO
nTamanho is int = Length(Texto)
//VERIFICA Texto = Replace(Texto,"ã","a") Texto = Replace(Texto,"á","a") Texto = Replace(Texto,"é","e") Texto = Replace(Texto,"ê","e") Texto = Replace(Texto,"Ê","e") Texto = Replace(Texto,"A","A") Texto = Replace(Texto,"A£","A") Texto = Replace(Texto,"á","A") Texto = Replace(Texto,"â","A") Texto = Replace(Texto,"Ã","A") Texto = Replace(Texto,"Ê","E") Texto = Replace(Texto,"é","E") Texto = Replace(Texto,"ê","E") Texto = Replace(Texto,"Ã","I") Texto = Replace(Texto,"ô","O") Texto = Replace(Texto,"Aµ","O") Texto = Replace(Texto,"ó","O") Texto = Replace(Texto,"A“","O") Texto = Replace(Texto,"Aº","U") Texto = Replace(Texto,"ç","C") Texto = Replace(Texto,"Ç","C") Texto = Replace(Texto,"ãO","AO") Texto = Replace(Texto,"É","E") Texto = Replace(Texto,"Ã%","E") Texto = Replace(Texto,"A£","a") Texto = Replace(Texto,"£","") Texto = Replace(Texto,"","") Texto = Replace(Texto,"¡","") Texto = Replace(Texto,"¢","") Texto = Replace(Texto,"õ","O") Texto = Replace(Texto,"µ","O") Texto = Replace(Texto,"Áº","u") Texto = Replace(Texto,"Aº","u") Texto = Replace(Texto,"º","u")
Texto = Replace(Texto,"ã","a") Texto = Replace(Texto,"á","a") Texto = Replace(Texto,"à","a") Texto = Replace(Texto,"â","a") Texto = Replace(Texto,"ä","a")
Texto = Replace(Texto,"~e","e") Texto = Replace(Texto,"é","e") Texto = Replace(Texto,"è","e") Texto = Replace(Texto,"ê","e") Texto = Replace(Texto,"ë","e")
Texto = Replace(Texto,"~i","i") Texto = Replace(Texto,"í","i") Texto = Replace(Texto,"ì","i") Texto = Replace(Texto,"î","i") Texto = Replace(Texto,"ï","i")
Texto = Replace(Texto,"õ","o") Texto = Replace(Texto,"ó","o") Texto = Replace(Texto,"ò","o") Texto = Replace(Texto,"ô","o") Texto = Replace(Texto,"ö","o")
Texto = Replace(Texto,"~u","u") Texto = Replace(Texto,"ú","u") Texto = Replace(Texto,"ù","u") Texto = Replace(Texto,"û","u") Texto = Replace(Texto,"ü","u")
Texto = Replace(Texto,"ç","c") Texto = Replace(Texto,"Ç","C")
Texto = Replace(Texto,"Ã","A") Texto = Replace(Texto,"Á","A") Texto = Replace(Texto,"À","A") Texto = Replace(Texto,"Â","A") Texto = Replace(Texto,"Ä","A")
Texto = Replace(Texto,"~E","E") Texto = Replace(Texto,"É","E") Texto = Replace(Texto,"È","E") Texto = Replace(Texto,"Ê","E") Texto = Replace(Texto,"Ë","E")
Texto = Replace(Texto,"~I","I") Texto = Replace(Texto,"Í","I") Texto = Replace(Texto,"Ì","I") Texto = Replace(Texto,"Î","I") Texto = Replace(Texto,"Ï","I")
Texto = Replace(Texto,"Õ","O") Texto = Replace(Texto,"Ó","O") Texto = Replace(Texto,"Ò","O") Texto = Replace(Texto,"Ô","O") Texto = Replace(Texto,"Ö","O")
Texto = Replace(Texto,"~U","U") Texto = Replace(Texto,"Ú","U") Texto = Replace(Texto,"Ù","U") Texto = Replace(Texto,"Û","U") Texto = Replace(Texto,"Ü","U")
//Remove caracteres htmls Texto = Replace(Texto,"<","") //html Texto = Replace(Texto,">","") //html Texto = Replace(Texto,""","") //html Texto = Replace(Texto,"&","") //html Texto = Replace(Texto,"Œ","") //html Texto = Replace(Texto,"œ","") //html Texto = Replace(Texto,"Š","") //html Texto = Replace(Texto,"š","") //html Texto = Replace(Texto,"Ÿ","") //html Texto = Replace(Texto,"ˆ","") //html Texto = Replace(Texto,"˜","") //html Texto = Replace(Texto," ","") //html Texto = Replace(Texto," ","") //html Texto = Replace(Texto," ","") //html Texto = Replace(Texto,"‌","") //html Texto = Replace(Texto,"‍","") //html Texto = Replace(Texto,"‎","") //html Texto = Replace(Texto,"‏","") //html Texto = Replace(Texto,"–","") //html Texto = Replace(Texto,"—","") //html Texto = Replace(Texto,"‘","") //html Texto = Replace(Texto,"’","") //html Texto = Replace(Texto,"‚","") //html Texto = Replace(Texto,"“","") //html Texto = Replace(Texto,"”","") //html Texto = Replace(Texto,"„","") //html Texto = Replace(Texto,"†","") //html Texto = Replace(Texto,"‡","") //html Texto = Replace(Texto,"‰","") //html Texto = Replace(Texto,"‹","") //html Texto = Replace(Texto,"›","") //html Texto = Replace(Texto,"€","") //html
Texto = WS_RemoveCaractAscII(Texto)
Texto = Capitalize(Texto)
RESULT(Texto)
------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------- //Desenvolvido por: Adriano Boller //18/09/2014 //adrianoboller@gmail.com skype adrianoboller //br.linkedin.com/in/adrianoboller
PROCEDURE WS_RemoveCaractAscII(LOCAL Texto is string)
nTotal is int = Length(Texto) nPos01 is int = 0 Busca is string = ""
Texto = Replace(Texto,"<?xml version="+Charact(34)+"1.0"+Charact(34)+" encoding="+Charact(34)+"utf-8"+Charact(34)+"?>","<?xml version="+Charact(34)+"1.0"+Charact(34)+"?>")
sAZ09 is string = CR+"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ[ ]0123456789'&*()_+=-,.!@#$%?>.<:{}|/\"+Charact(34)
Texto = Upper(Texto)
IF Texto <> "" AND sAZ09 <> Null THEN
LOOP (nTotal)
nPos01 += 1
IF nPos01 > 0 THEN
Busca = Texto[[nPos01]]
IF PositionOccurrence(sAZ09,Busca,firstRank,FromBeginning) = 0 AND sAZ09 <> Null AND Busca <> Null THEN Texto[[nPos01]] = "" END
END
END
END
RESULT(Texto)
-------------------------------------------------------------------------- -------------------------------------------------------------------------- -------------------------------------------------------------------------- //Desenvolvido por: Adriano Boller //18/09/2014 //adrianoboller@gmail.com skype adrianoboller //br.linkedin.com/in/adrianoboller
PROCEDURE Capitalize(LOCAL Texto)
ChangeCharset(charsetOccidental) // SEM ACENTO
IF Texto <> Null AND Texto <> "" Texto = NoAccent(Texto)
Texto = Lower(Texto)
Texto = Upper(Middle(Texto,1,1)) + Middle(Texto,2,Length(Texto))
nEspaco01 is int = PositionOccurrence(Texto," ",firstRank,FromBeginning) + 1 IF nEspaco01 > 1 THEN Texto = Middle(Texto,1,nEspaco01-1) + Upper(Middle(Texto,nEspaco01,1)) + Middle(Texto,nEspaco01+1,Length(Texto)) END
TOT is int = 0 POS1, POS2, POS3 is int = 0 TOT = Length(Texto) LOOP (TOT) POS1 +=1 POS2 = POS1 + 1 POS3 = POS2 + 1 IF Middle(Texto,POS1,1) = " " AND Middle(Texto,POS2,1) <> " " Texto = Middle(Texto,1,POS1) + Upper(Middle(Texto,POS2,1)) + Middle(Texto,POS3,TOT) END END
Texto = Replace(Texto," Da ", " da ")
Texto = Replace(Texto," Das ", " das ")
Texto = Replace(Texto," De ", " de ")
Texto = Replace(Texto," Do ", " do ")
Texto = Replace(Texto," Dos ", " dos ")
END
RESULT(Texto)
------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------------------------------------------------------- //Desenvolvido por: Adriano Boller //18/09/2014 //adrianoboller@gmail.com skype adrianoboller //br.linkedin.com/in/adrianoboller
PROCEDURE Clip(LOCAL Texto)
Texto = NoSpace(Texto)
RESULT(Texto)
------------------------------------------------------------------------- ------------------------------------------------------------------------- ------------------------------------------------------------------------- //Desenvolvido por: Adriano Boller //18/09/2014 //adrianoboller@gmail.com skype adrianoboller //br.linkedin.com/in/adrianoboller
PROCEDURE WS_CEP_EnderecoDasCoordenadas(LOCAL pLatitude, LOCAL pLogitude, LOCAL ODT, LOCAL DebugSN)
IF GloDebugSN = "S" THEN Info("WS_CEP_EnderecoDasCoordenadas") DebugSN = "S" END
NextTitle("Atenção")
ok is boolean = False
GloEnderecoOK = False
Endereco, RuaLatitude, RuaLongitude is string = ""
IF pLatitude <> 0 AND pLogitude <> 0 AND pLatitude <> Null AND pLogitude <> Null
ExcedeuConsultas01 is string = "ZERO_RESULTS"
ExcedeuConsultas02 is string = "OVER_QUERY_LIMIT"
//Url is string = "http://maps.googleapis.com/maps/api/geocode/json…=" + pLatitude + "," + pLogitude + "&sensor=true"
Url is string = "http://maps.googleapis.com/maps/api/geocode/json…=" + pLatitude + "," + pLogitude + "&sensor=false"
IF DebugSN = "S" Info("01",Url) END
HTTPTimeOut(GloHTTPTimeOut)
//loop (3) ok = HTTPRequest(Url) IF ok = True THEN //BREAK END //END
ChangeCharset(charsetOccidental) // SEM ACENTO
RetJson is string = HTTPGetResult(httpResult)
IF DebugSN = "S" Info(Url, pLatitude, pLogitude, RetJson) END
// fSaveText("c:\json.txt",RetJson) // Erro01 = PositionOccurrence(RetJson,ExcedeuConsultas01,firstRank,IgnoreCase) // Erro02 = PositionOccurrence(RetJson,ExcedeuConsultas02,firstRank,IgnoreCase) // Erro03 = PositionOccurrence(RetJson,ExcedeuConsultas03,firstRank,IgnoreCase)
IF PositionOccurrence(RetJson,ExcedeuConsultas01,firstRank,IgnoreCase) > 0 OR... PositionOccurrence(RetJson,ExcedeuConsultas02,firstRank,IgnoreCase) > 0 OR... PositionOccurrence(Upper(RetJson),"ZERO",firstRank,IgnoreCase) > 0 OR... PositionOccurrence(Upper(RetJson),"OVER",firstRank,IgnoreCase) > 0
RetJson = "ERRO" GloEnderecoOK = False
ELSE IF RetJson <> "ERRO"
GloEnderecoOK = True
TagEnd is string = """formatted_address"" :"
i is int = PositionOccurrence(RetJson, TagEnd, firstRank, IgnoreCase ) + Length(TagEnd)
//Pega endereço (entre duas aspas)
Endereco = ExtractString(RetJson[[i TO]],2,"""")
Endereco = WS_RemoveAcentos(Endereco)
TagLat is string = """lat"" :"
i = PositionOccurrence(RetJson, TagLat, firstRank, IgnoreCase ) + Length(TagLat)
RuaLatitude = ExtractString(RetJson[[i TO]],2,"""")
Taglng is string = """lng"" :"
i = PositionOccurrence(RetJson, Taglng, firstRank, IgnoreCase ) + Length(Taglng)
RuaLongitude = ExtractString(RetJson[[i TO]],2,"""")
//info("Json",Endereco, RuaLatitude + "," + RuaLongitude , pLatitude + "," + pLogitude )
END
IF Endereco = "" OR RetJson = "ERRO" THEN
//Url = "http://maps.googleapis.com/maps/api/geocode/xml…=" + pLatitude + "," + pLogitude + "&sensor=true" Url = "http://maps.googleapis.com/maps/api/geocode/xml…=" + pLatitude + "," + pLogitude + "&sensor=false"
IF DebugSN = "S" Info("02",Url) END
HTTPTimeOut(GloHTTPTimeOut)
//LOOP (3) ok = HTTPRequest(Url) IF ok = True THEN //BREAK END //END
RetXml is string = HTTPGetResult(httpResult)
IF DebugSN = "S" Info("Xml:",RetXml) END
//<formatted_address>Rua Professora Antonia Reginato Vianna, 442 - Capão da Imbuia, Cajuru, Curitiba - PR, 82810-300, Brasil</formatted_address>
IF PositionOccurrence(RetXml,"<formatted_address>",firstRank) > 0 THEN
GloEnderecoOK = True
//Endereço nPosicaoInicial is int = PositionOccurrence(RetXml,"<formatted_address>",firstRank) + Length("<formatted_address>") nPosicaoFinal is int = PositionOccurrence(RetXml,"</formatted_address>",firstRank) + Length("</formatted_address>") nPosicaoFinal = nPosicaoFinal - nPosicaoInicial Endereco = Middle(RetXml,nPosicaoInicial,nPosicaoFinal)
// //Latitude da Rua // nPosicaoInicial2 is int = PositionOccurrence(RetXml,"<lat>",firstRank) + Length("<lat>") // nPosicaoFinal2 is int = PositionOccurrence(RetXml,"</lat>",firstRank) + Length("</lat>") // nPosicaoFinal = nPosicaoFinal2 - nPosicaoInicial2 // RuaLatitude = Middle(RetXml,nPosicaoInicial2,nPosicaoFinal2) // // //Latitude da Rua // nPosicaoInicial3 is int = PositionOccurrence(RetXml,"<lng>",firstRank) + Length("<lng>") // nPosicaoFinal3 is int = PositionOccurrence(RetXml,"</lng>",firstRank) + Length("</lng>") // nPosicaoFinal = nPosicaoFinal3 - nPosicaoInicial3 // RuaLongitude = Middle(RetXml,nPosicaoInicial3,nPosicaoFinal3) // // Info("Xml",Endereco, RuaLatitude + "," + RuaLongitude , pLatitude + "," + pLogitude )
ELSE GloEnderecoOK = False RetJson = "ERRO" END
END
IF Upper(Endereco) = "ERRO" AND ODT = "O" THEN GloEnderecoOK = False RetJson = "ERRO" END
END
IF RetJson <> "ERRO" IF ODT = "O" GloVoceEnderecoLongo = Endereco GloVoceEndereco = Endereco // GloVocelatitude = RuaLatitude // GloVoceLongitude = RuaLongitude ELSE IF ODT = "D" GloDestinoEnderecoLongo = Endereco GloDestinoEndereco = Endereco // GloDestinoLatitude = RuaLatitude // GloDestinoLongitude = RuaLongitude ELSE IF ODT = "T" GloTaxiEnderecoLongo = Endereco GloTaxiEndereco = Endereco // GloDestinoLatitude = RuaLatitude // GloDestinoLongitude = RuaLongitude END END
IF DebugSN = "S" Info("03",Endereco) END
IF RetJson = "ERRO" THEN Popup(GloMsgSemInternet,"L") END
//Endereço inválido //Exemplo: Curitiba - Parana --- ( - ) IF QtdeOccurrence(GloVoceEnderecoLongo," - ") = 1 Endereco = "" GloVoceEnderecoLongo = "ERRO" GloVoceEndereco = "ERRO" GloVoceNumero = 0 //Info("Endereço inválido",GloVoceEnderecoLongo) END IF QtdeOccurrence(GloDestinoEnderecoLongo," - ") = 1 Endereco = "" GloDestinoEnderecoLongo = "ERRO" GloDestinoEndereco = "ERRO" GloDestinoNumero = 0 //Info("Endereço inválido",GloDestinoEnderecoLongo) END
RESULT (Endereco) | | | |
|
|
|
Nenhum comentário:
Postar um comentário