|
Procedures GoogleMaps and Uteis |
Débuté par adrianoboller, 18 sep. 2014 20:49 - 1 réponse |
| |
| | | |
|
| |
Membre enregistré 3 657 messages Popularité : +175 (223 votes) |
|
Posté le 18 septembre 2014 - 20:49 |
////////////////////////////////////////////////////////////////////////////////////////// //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) |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 1 298 messages Popularité : +20 (72 votes) |
|
Posté le 21 septembre 2014 - 11:10 |
Bonjour Adriano,, Hola Adriano
Peux tu nous expliquer un peu ce que fait le code que tu nous partage
Puedes explicar nos le que hacer el codigo fuente que comparte con nosotros ?
Pour les francophile voici son code traduit en français
Procedure WS_CEP_Rota(LOCAL Origem, LOCAL Destino, LOCAL DebugSN)
SI Origem <> "" ET Destino = "" ALORS Destino = Origem FIN
nVirgula est entier = 0
nID_Numero est entier = 1 nID_Endereco est entier = 1 nID_Bairro01 est entier = 1 nID_Bairro02 est entier = 1 nID_Cidade01 est entier = 1 nID_Cidade02 est entier = 1 nID_Estado est entier = 1 nID_Pais est entier = 1 nID_CEP est entier = 1 nQTD_ADDRESS_COMPONENT est entier = 0
GloVoceEnderecoLongo = "" GloDestinoEnderecoLongo = "" GloVoceLatitude = 0 GloVoceLongitude = 0 GloDestinoLatitude = 0 GloDestinoLongitude = 0
GloLatitudeNorte = "" GloLongitudeNorte = ""
GloLatitudeSul = "" GloLongitudeSul = ""
GloTempoDestino = "" GloTempoDestinoText = "" GloTempoTaxi = ""
GloDistanciaDestino = "" GloDistanciaDestinoText = "" GloDistanciaTaxi = ""
LocEnderecoOrigem, LocEnderecoCurtoOrigem, LocNumeroOrigem, LocBairro01Origem, LocBairro02Origem, LocCidade01Origem, LocCidade02Origem, LocEstadoOrigem, LocPaisOrigem, LocCepOrigem, LocLatitudeOrigem, LocLongitudeOrigem, LocLatitudeOrigemNorte, LocLongitudeOrigemNorte, LocLatitudeOrigemSul, LocLongitudeOrigemSul est chaîne = ""
LocEnderecoDestino, LocEnderecoCurtoDestino, LocNumeroDestino, LocBairro01Destino, LocBairro02Destino, LocCidade01Destino, LocCidade02Destino, LocEstadoDestino, LocPaisDestino, LocCepDestino, LocLatitudeDestino, LocLongitudeDestino, LocLatitudeDestinoNorte, LocLongitudeDestinoNorte, LocLatitudeDestinoSul, LocLongitudeDestinoSul est chaîne = ""
ok est booléen = Faux
SI Origem <> "" ET Destino <> ""
ChangeAlphabet(alphabetOccidental)
Origem = Remplace(Origem," ","+")
Origem = WS_RemoveAcentos(Origem)
Destino = Remplace(Destino," ","+")
Destino = WS_RemoveAcentos(Destino)
UrlRota est chaîne = "http://maps.googleapis.com/maps/api/directions/xml…"
ok = HTTPRequête(UrlRota) SI ok = Vrai ALORS
FIN
SI ok = Vrai ALORS
XmlResultado est chaîne = HTTPDonneRésultat(httpRésultat)
SI PositionOccurrence(XmlResultado,"<status>OK</status>",rangPremier,DepuisDébut) > 0 OU PositionOccurrence(XmlResultado,"<status>ok</status>",rangPremier,DepuisDébut) > 0
SI XmlResultado <> "" ALORS
sXmlResultadoRecorte est chaîne = XmlResultado
XmlDoc01 est un XMLDocument XmlDoc01 = XMLOuvre(sXmlResultadoRecorte,depuisChaîne)
GloLatitudeNorte = XmlDoc01.DirectionsResponse.route.bounds.northeast.lat GloLongitudeNorte = XmlDoc01.DirectionsResponse.route.bounds.northeast.lng
GloLatitudeSul = XmlDoc01.DirectionsResponse.route.bounds.southwest.lat GloLongitudeSul = XmlDoc01.DirectionsResponse.route.bounds.southwest.lng
XmlResultado = WS_RemoveAcentos(XmlResultado) XmlResultado = WS_RemoveCaracteresRota(XmlResultado)
nInicio est entier = PositionOccurrence(XmlResultado,"</step>",rangDernier,DepuisDébut) + 7 XmlResultado = Milieu(XmlResultado,nInicio,Taille(XmlResultado)) XmlResultado = "<leg>"+XmlResultado
nFim est entier = PositionOccurrence(XmlResultado,"</leg>",rangPremier,DepuisDébut) + 5 XmlResultado = Milieu(XmlResultado,1,nFim)
XmlDoc02 est un XMLDocument XmlDoc02 = XMLOuvre(XmlResultado,depuisChaîne)
GloVoceEnderecoLongo = XmlDoc02.leg.start_address GloVoceEnderecoLongo = Capitalize(GloVoceEnderecoLongo)
GloDestinoEnderecoLongo = XmlDoc02.leg.end_address GloDestinoEnderecoLongo = Capitalize(GloDestinoEnderecoLongo)
GloTempoDestino = XmlDoc02.leg.duration.value GloTempoDestinoText = XmlDoc02.leg.duration.text GloTempoTaxi = GloTempoDestino
GloDistanciaDestino = XmlDoc02.leg.distance.value GloDistanciaDestinoText = XmlDoc02.leg.distance.text GloDistanciaTaxi = GloDistanciaDestino
SI XmlDoc02.leg.start_location.lat < 0
GloVoceLatitude = XmlDoc02.leg.start_location.lat LocLatitudeOrigem = GloVoceLatitude
GloVoceLongitude = XmlDoc02.leg.start_location.lng LocLongitudeOrigem = GloVoceLongitude
FIN
SI XmlDoc02.leg.end_location.lat < 0 ALORS
GloDestinoLatitude = XmlDoc02.leg.end_location.lat
GloDestinoLongitude = XmlDoc02.leg.end_location.lng
FIN
FIN
SINON GloDestinoEndereco = "" GloDestinoEnderecoLongo = ""
GloTempoDestino = "" GloDistanciaDestino = "" FIN
FIN
FIN
SI DebugSN = "S" OU GloDebugSN = "S" ALORS 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) FIN
SI QtdeOccurrence(GloVoceEnderecoLongo," - ") = 1 GloVoceEndereco = "" GloVoceNumero = "" GloVoceEnderecoLongo = "ERRO" FIN SI QtdeOccurrence(GloDestinoEnderecoLongo," - ") = 1 GloDestinoEndereco = "" GloDestinoNumero = "" GloDestinoEnderecoLongo = "ERRO" FIN
RENVOYER(GloVoceEnderecoLongo)
Procedure WS_ExtrairEndereco(Endereco)
SI GloDebugSN = "S" ALORS TitreSuivant("Extrair Endereço") Info("WS_ExtrairEndereco",Endereco) FIN
sRua, sNumero, sBairro, sCidade, sEstado, sPais, sCep est chaîne = ""
SI Endereco <> ""
Endereco = Remplace(Endereco,"State Of", "")
arrSplitArray est tableau de chaînes ChaîneVersTableau(Endereco, arrSplitArray," - ")
SI TableauOccurrence(arrSplitArray) = 3
arrSplitRuaNumeroArray est tableau de chaînes ChaîneVersTableau(arrSplitArray[1], arrSplitRuaNumeroArray,",")
SI TableauOccurrence(arrSplitRuaNumeroArray) = 1
sRua = arrSplitRuaNumeroArray[1];
sNumero = "0";
SINON SI TableauOccurrence(arrSplitRuaNumeroArray) = 2
sRua = arrSplitRuaNumeroArray[1];
SI PositionOccurrence(arrSplitRuaNumeroArray[2],"-",rangPremier) > 0 ALORS
arrSplitNumeroArray est tableau de chaînes ChaîneVersTableau(arrSplitRuaNumeroArray[2], arrSplitNumeroArray,"-")
QUAND EXCEPTION DANS Media est entier = (Val(arrSplitNumeroArray[1]) + Val(arrSplitNumeroArray[2])) / 2 FAIRE sNumero = 0 SINON sNumero = Media FIN
SINON
sNumero = arrSplitRuaNumeroArray[2];
FIN
FIN
arrSplitBairroCidadeArray est tableau de chaînes ChaîneVersTableau(arrSplitArray[2], arrSplitBairroCidadeArray,",")
SI TableauOccurrence(arrSplitBairroCidadeArray) = 2
sBairro =arrSplitBairroCidadeArray[1]; sCidade = arrSplitBairroCidadeArray[2];
SINON SI (TableauOccurrence(arrSplitBairroCidadeArray) = 3)
sBairro = arrSplitBairroCidadeArray[1]; sCidade = arrSplitBairroCidadeArray[3];
SINON
sBairro = ""; sCidade = "";
FIN
arrSplitEstadoCepPaisArray est tableau de chaînes ChaîneVersTableau(arrSplitArray[3], arrSplitEstadoCepPaisArray,",")
SI TableauOccurrence(arrSplitEstadoCepPaisArray) = 2
sEstado = arrSplitEstadoCepPaisArray[1]; sPais = arrSplitEstadoCepPaisArray[2]; sCep = ""
SINON SI TableauOccurrence(arrSplitEstadoCepPaisArray)= 3
sEstado = arrSplitEstadoCepPaisArray[1]; sCep = arrSplitEstadoCepPaisArray[2]; sPais = arrSplitEstadoCepPaisArray[3]; SINON
sEstado = "" sCep = "" sPais = ""
FIN
FIN
FIN
sEstado = Capitalize(Clip(sEstado)) SI sEstado <> ""
SI sEstado = "Acre" ALORS sEstado = "AC" SINON SI sEstado = "Alagoas" ALORS sEstado = "AL" SINON SI sEstado = "Amazonas" ALORS sEstado = "AM" SINON SI sEstado = "Amapa" ALORS sEstado = "AP" SINON SI sEstado = "Bahia" ALORS sEstado = "BA" SINON SI sEstado = "Ceara" ALORS sEstado = "CE" SINON SI sEstado = "Distrito Federal" ALORS sEstado = "DF" SINON SI sEstado = "Espirito Santo" ALORS sEstado = "ES" SINON SI sEstado = "Goias" ALORS sEstado = "GO" SINON SI sEstado = "Maranhao" ALORS sEstado = "MA" SINON SI sEstado = "Minas Gerais" ALORS sEstado = "MG" SINON SI sEstado = "Mato Grosso do Sul" ALORS sEstado = "MS" SINON SI sEstado = "Mato Grosso" ALORS sEstado = "MT" SINON SI sEstado = "Parana" ALORS sEstado = "PR" SINON SI sEstado = "Para" ALORS sEstado = "PA" SINON SI sEstado = "Paraiba" ALORS sEstado = "PB" SINON SI sEstado = "Pernambuco" ALORS sEstado = "PE" SINON SI sEstado = "Piaui" ALORS sEstado = "PI" SINON SI sEstado = "Rio de Janeiro" ALORS sEstado = "RJ" SINON SI sEstado = "Rio Grande DO Norte" ALORS sEstado = "RN" SINON SI sEstado = "Rondonia" ALORS sEstado = "RO" SINON SI sEstado = "Roraima" ALORS sEstado = "RR" SINON SI sEstado = "Rio Grande DO Sul" ALORS sEstado = "RS" SINON SI sEstado = "Santa Catarina" ALORS sEstado = "SC" SINON SI sEstado = "Sergipe" ALORS sEstado = "SE" SINON SI sEstado = "Sao Paulo" ALORS sEstado = "SP" SINON SI sEstado = "Tocantins" ALORS sEstado = "TO" FIN
FIN
arrResult est tableau de chaînes
Ajoute(arrResult, Capitalize(Clip(sRua))) Ajoute(arrResult, Clip(sNumero)) Ajoute(arrResult, Capitalize(Clip(sBairro))) Ajoute(arrResult, Capitalize(Clip(sCidade))) Ajoute(arrResult, Capitalize(Clip(sEstado))) Ajoute(arrResult, Clip(sCep)) Ajoute(arrResult, Capitalize(Clip(sPais)))
SI GloDebugSN = "S" ALORS TitreSuivant("Extrair Endereço") Info(arrResult[1],arrResult[2],arrResult[3],arrResult[4],arrResult[5],arrResult[6],arrResult[7]) FIN
RENVOYER arrResult
Procedure WS_RemoveAcentos(LOCAL Texto)
ChangeAlphabet(alphabetOccidental)
nTamanho est entier = Taille(Texto)
Texto = Remplace(Texto,"ã","a") Texto = Remplace(Texto,"á","a") Texto = Remplace(Texto,"é","e") Texto = Remplace(Texto,"ê","e") Texto = Remplace(Texto,"Ê","e") Texto = Remplace(Texto,"A","A") Texto = Remplace(Texto,"A£","A") Texto = Remplace(Texto,"á","A") Texto = Remplace(Texto,"â","A") Texto = Remplace(Texto,"Ã","A") Texto = Remplace(Texto,"Ê","E") Texto = Remplace(Texto,"é","E") Texto = Remplace(Texto,"ê","E") Texto = Remplace(Texto,"Ã","I") Texto = Remplace(Texto,"ô","O") Texto = Remplace(Texto,"Aµ","O") Texto = Remplace(Texto,"ó","O") Texto = Remplace(Texto,"A“","O") Texto = Remplace(Texto,"Aº","U") Texto = Remplace(Texto,"ç","C") Texto = Remplace(Texto,"Ç","C") Texto = Remplace(Texto,"ãO","AO") Texto = Remplace(Texto,"É","E") Texto = Remplace(Texto,"Ã%","E") Texto = Remplace(Texto,"A£","a") Texto = Remplace(Texto,"£","") Texto = Remplace(Texto,"","") Texto = Remplace(Texto,"¡","") Texto = Remplace(Texto,"¢","") Texto = Remplace(Texto,"õ","O") Texto = Remplace(Texto,"µ","O") Texto = Remplace(Texto,"Áº","u") Texto = Remplace(Texto,"Aº","u") Texto = Remplace(Texto,"º","u")
Texto = Remplace(Texto,"ã","a") Texto = Remplace(Texto,"á","a") Texto = Remplace(Texto,"à","a") Texto = Remplace(Texto,"â","a") Texto = Remplace(Texto,"ä","a")
Texto = Remplace(Texto,"~e","e") Texto = Remplace(Texto,"é","e") Texto = Remplace(Texto,"è","e") Texto = Remplace(Texto,"ê","e") Texto = Remplace(Texto,"ë","e")
Texto = Remplace(Texto,"~i","i") Texto = Remplace(Texto,"í","i") Texto = Remplace(Texto,"ì","i") Texto = Remplace(Texto,"î","i") Texto = Remplace(Texto,"ï","i")
Texto = Remplace(Texto,"õ","o") Texto = Remplace(Texto,"ó","o") Texto = Remplace(Texto,"ò","o") Texto = Remplace(Texto,"ô","o") Texto = Remplace(Texto,"ö","o")
Texto = Remplace(Texto,"~u","u") Texto = Remplace(Texto,"ú","u") Texto = Remplace(Texto,"ù","u") Texto = Remplace(Texto,"û","u") Texto = Remplace(Texto,"ü","u")
Texto = Remplace(Texto,"ç","c") Texto = Remplace(Texto,"Ç","C")
Texto = Remplace(Texto,"Ã","A") Texto = Remplace(Texto,"Á","A") Texto = Remplace(Texto,"À","A") Texto = Remplace(Texto,"Â","A") Texto = Remplace(Texto,"Ä","A")
Texto = Remplace(Texto,"~E","E") Texto = Remplace(Texto,"É","E") Texto = Remplace(Texto,"È","E") Texto = Remplace(Texto,"Ê","E") Texto = Remplace(Texto,"Ë","E")
Texto = Remplace(Texto,"~I","I") Texto = Remplace(Texto,"Í","I") Texto = Remplace(Texto,"Ì","I") Texto = Remplace(Texto,"Î","I") Texto = Remplace(Texto,"Ï","I")
Texto = Remplace(Texto,"Õ","O") Texto = Remplace(Texto,"Ó","O") Texto = Remplace(Texto,"Ò","O") Texto = Remplace(Texto,"Ô","O") Texto = Remplace(Texto,"Ö","O")
Texto = Remplace(Texto,"~U","U") Texto = Remplace(Texto,"Ú","U") Texto = Remplace(Texto,"Ù","U") Texto = Remplace(Texto,"Û","U") Texto = Remplace(Texto,"Ü","U")
Texto = Remplace(Texto,"<","") Texto = Remplace(Texto,">","") Texto = Remplace(Texto,""","") Texto = Remplace(Texto,"&","") Texto = Remplace(Texto,"Œ","") Texto = Remplace(Texto,"œ","") Texto = Remplace(Texto,"Š","") Texto = Remplace(Texto,"š","") Texto = Remplace(Texto,"Ÿ","") Texto = Remplace(Texto,"ˆ","") Texto = Remplace(Texto,"˜","") Texto = Remplace(Texto," ","") Texto = Remplace(Texto," ","") Texto = Remplace(Texto," ","") Texto = Remplace(Texto,"","") Texto = Remplace(Texto,"","") Texto = Remplace(Texto,"","") Texto = Remplace(Texto,"","") Texto = Remplace(Texto,"–","") Texto = Remplace(Texto,"—","") Texto = Remplace(Texto,"‘","") Texto = Remplace(Texto,"’","") Texto = Remplace(Texto,"‚","") Texto = Remplace(Texto,"“","") Texto = Remplace(Texto,"”","") Texto = Remplace(Texto,"„","") Texto = Remplace(Texto,"†","") Texto = Remplace(Texto,"‡","") Texto = Remplace(Texto,"‰","") Texto = Remplace(Texto,"‹","") Texto = Remplace(Texto,"›","") Texto = Remplace(Texto,"€","")
Texto = WS_RemoveCaractAscII(Texto)
Texto = Capitalize(Texto)
RENVOYER(Texto)
Procedure WS_RemoveCaractAscII(LOCAL Texto est chaîne)
nTotal est entier = Taille(Texto) nPos01 est entier = 0 Busca est chaîne = ""
Texto = Remplace(Texto,"<?xml version="+Caract(34)+"1.0"+Caract(34)+" encoding="+Caract(34)+"utf-8"+Caract(34)+"?>","<?xml version="+Caract(34)+"1.0"+Caract(34)+"?>")
sAZ09 est chaîne = RC+"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ[ ]0123456789'&*()_+=-,.!@#$%?>.<:{}|/\"+Caract(34)
Texto = Majuscule(Texto)
SI Texto <> "" ET sAZ09 <> Null ALORS
BOUCLE (nTotal)
nPos01 += 1
SI nPos01 > 0 ALORS
Busca = Texto[[nPos01]]
SI PositionOccurrence(sAZ09,Busca,rangPremier,DepuisDébut) = 0 ET sAZ09 <> Null ET Busca <> Null ALORS Texto[[nPos01]] = "" FIN
FIN
FIN
FIN
RENVOYER(Texto)
-------------------------------------------------------------------------- -------------------------------------------------------------------------- -------------------------------------------------------------------------- //Desenvolvido por: Adriano Boller //18/09/2014 //adrianoboller@gmail.com skype adrianoboller //br.linkedin.com/in/adrianoboller
PROCEDURE Capitalize(LOCAL Texto)
ChangeAlphabet(alphabetOccidental) // SEM ACENTO
SI Texto <> Null ET Texto <> "" Texto = SansAccent(Texto) Texto = Minuscule(Texto) Texto = Majuscule(Milieu(Texto,1,1)) + Milieu(Texto,2,Taille(Texto)) nEspaco01 est entier = PositionOccurrence(Texto," ",rangPremier,DepuisDébut) + 1 SI nEspaco01 > 1 ALORS Texto = Milieu(Texto,1,nEspaco01-1) + Majuscule(Milieu(Texto,nEspaco01,1)) + Milieu(Texto,nEspaco01+1,Taille(Texto)) FIN TOT est entier = 0 POS1, POS2, POS3 est entier = 0 TOT = Taille(Texto) BOUCLE (TOT) POS1 +=1 POS2 = POS1 + 1 POS3 = POS2 + 1 SI Milieu(Texto,POS1,1) = " " ET Milieu(Texto,POS2,1) <> " " Texto = Milieu(Texto,1,POS1) + Majuscule(Milieu(Texto,POS2,1)) + Milieu(Texto,POS3,TOT) FIN FIN Texto = Remplace(Texto," Da ", " da ") Texto = Remplace(Texto," Das ", " das ") Texto = Remplace(Texto," De ", " de ") Texto = Remplace(Texto," Do ", " do ") Texto = Remplace(Texto," Dos ", " dos ") FIN
RENVOYER(Texto)
Procedure Clip(LOCAL Texto)
Texto = SansEspace(Texto)
RENVOYER(Texto)
Procedure WS_CEP_EnderecoDasCoordenadas(LOCAL pLatitude, LOCAL pLogitude, LOCAL ODT, LOCAL DebugSN)
SI GloDebugSN = "S" ALORS Info("WS_CEP_EnderecoDasCoordenadas") DebugSN = "S" FIN
TitreSuivant("Atenção")
ok est booléen = Faux
GloEnderecoOK = Faux
Endereco, RuaLatitude, RuaLongitude est chaîne = ""
SI pLatitude <> 0 ET pLogitude <> 0 ET pLatitude <> Null ET pLogitude <> Null
ExcedeuConsultas01 est chaîne = "ZERO_RESULTS"
ExcedeuConsultas02 est chaîne = "OVER_QUERY_LIMIT"
Url est chaîne = "http://maps.googleapis.com/maps/api/geocode/json…=" + pLatitude + "," + pLogitude + "&sensor=false"
SI DebugSN = "S" Info("01",Url) FIN
HTTPTimeOut(GloHTTPTimeOut)
ok = HTTPRequête(Url) SI ok = Vrai ALORS
FIN
ChangeAlphabet(alphabetOccidental)
RetJson est chaîne = HTTPDonneRésultat(httpRésultat)
SI DebugSN = "S" Info(Url, pLatitude, pLogitude, RetJson) FIN
SI PositionOccurrence(RetJson,ExcedeuConsultas01,rangPremier,SansCasse) > 0 OU... PositionOccurrence(RetJson,ExcedeuConsultas02,rangPremier,SansCasse) > 0 OU... PositionOccurrence(Majuscule(RetJson),"ZERO",rangPremier,SansCasse) > 0 OU... PositionOccurrence(Majuscule(RetJson),"OVER",rangPremier,SansCasse) > 0
RetJson = "ERRO" GloEnderecoOK = Faux
SINON SI RetJson <> "ERRO"
GloEnderecoOK = Vrai
TagEnd est chaîne = """formatted_address"" :"
i est entier = PositionOccurrence(RetJson, TagEnd, rangPremier, SansCasse ) + Taille(TagEnd)
Endereco = ExtraitChaîne(RetJson[[i A]],2,"""")
Endereco = WS_RemoveAcentos(Endereco)
TagLat est chaîne = """lat"" :"
i = PositionOccurrence(RetJson, TagLat, rangPremier, SansCasse ) + Taille(TagLat)
RuaLatitude = ExtraitChaîne(RetJson[[i A]],2,"""")
Taglng est chaîne = """lng"" :"
i = PositionOccurrence(RetJson, Taglng, rangPremier, SansCasse ) + Taille(Taglng)
RuaLongitude = ExtraitChaîne(RetJson[[i A]],2,"""")
FIN
SI Endereco = "" OU RetJson = "ERRO" ALORS
Url = "http://maps.googleapis.com/maps/api/geocode/xml…=" + pLatitude + "," + pLogitude + "&sensor=false"
SI DebugSN = "S" Info("02",Url) FIN
HTTPTimeOut(GloHTTPTimeOut)
ok = HTTPRequête(Url) SI ok = Vrai ALORS
FIN
RetXml est chaîne = HTTPDonneRésultat(httpRésultat)
SI DebugSN = "S" Info("Xml:",RetXml) FIN
SI PositionOccurrence(RetXml,"<formatted_address>",rangPremier) > 0 ALORS
GloEnderecoOK = Vrai
nPosicaoInicial est entier = PositionOccurrence(RetXml,"<formatted_address>",rangPremier) + Taille("<formatted_address>") nPosicaoFinal est entier = PositionOccurrence(RetXml,"</formatted_address>",rangPremier) + Taille("</formatted_address>") nPosicaoFinal = nPosicaoFinal - nPosicaoInicial Endereco = Milieu(RetXml,nPosicaoInicial,nPosicaoFinal)
SINON GloEnderecoOK = Faux RetJson = "ERRO" FIN
FIN
SI Majuscule(Endereco) = "ERRO" ET ODT = "O" ALORS GloEnderecoOK = Faux RetJson = "ERRO" FIN
FIN
SI RetJson <> "ERRO" SI ODT = "O" GloVoceEnderecoLongo = Endereco GloVoceEndereco = Endereco
SINON SI ODT = "D" GloDestinoEnderecoLongo = Endereco GloDestinoEndereco = Endereco
SINON SI ODT = "T" GloTaxiEnderecoLongo = Endereco GloTaxiEndereco = Endereco
FIN FIN
SI DebugSN = "S" Info("03",Endereco) FIN
SI RetJson = "ERRO" ALORS Popup(GloMsgSemInternet,"L") FIN
SI QtdeOccurrence(GloVoceEnderecoLongo," - ") = 1 Endereco = "" GloVoceEnderecoLongo = "ERRO" GloVoceEndereco = "ERRO" GloVoceNumero = 0
FIN SI QtdeOccurrence(GloDestinoEnderecoLongo," - ") = 1 Endereco = "" GloDestinoEnderecoLongo = "ERRO" GloDestinoEndereco = "ERRO" GloDestinoNumero = 0
FIN
RENVOYER (Endereco)
-- Bertin CARRIERE Consultant & Formateur bertin.carriere@gmail.com http://www.zen-project.be http://www.linkedin.com/in/bertincarriere Belgique +32(0)2/318.02.67 France +33(0)3/66.722.542 Espagne +34.5/12.702.266
Membre de http://www.be-dev.be |
| |
| |
| | | |
|
| | | | |
| | |
|