|
Procedures GoogleMaps and Uteis |
Iniciado por adrianoboller, 18,sep. 2014 20:54 - No hay respuesta |
| |
| | | |
|
| |
Miembro registrado 3.657 mensajes Popularité : +175 (223 votes) |
|
Publicado el 18,septiembre 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) |
| |
| |
| | | |
|
| | | | |
| | |
|