PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 25 → Wx - Busca Endereço Rota e Endereço das coordendas
Wx - Busca Endereço Rota e Endereço das coordendas
Débuté par adrianoboller, 29 aoû. 2015 21:18 - 8 réponses
Membre enregistré
3 655 messages
Popularité : +175 (223 votes)
Posté le 29 août 2015 - 21:18
ProcedureCEP_FuncaoBuscarEndereco(sEndereco,sNumero,sCidade,sUF)

//endereco = "Jose gulin"
//Numero = 500
//cidade = "curitiba"
//UF ="PR"
sEnderecoLongo isstring
arrResult1 isarray of strings
EnderecoInicial,sEnderecoLocalizadoLongo isstring=""

IFsNumero=0ORsNumero=""ORIsNumeric(sNumero) =FalseTHEN
sNumero=10
END

IFsUF=""THEN
sUF="PR"
END

IFsNumero=0ORsNumero=""ORIsNumeric(sNumero) =FalseTHEN
sNumero=10
END


//Busca Alias + Rota

EnderecoInicial=sEndereco+"-"+sNumero+"-"+sCidade+"-"+sUF+"-Brasil"

sEnderecoLongo=CEP_Rota(EnderecoInicial,EnderecoInicial,"")

IFsEnderecoLongo<>""ANDsEnderecoLongo<>"ERRO"THEN

arrResult1=CEP_ExtrairEndereco(sEnderecoLongo)

ELSE
ArrayDeleteAll(arrResult1)

END

RESULT(arrResult1)
>
Membre enregistré
3 655 messages
Popularité : +175 (223 votes)
Posté le 29 août 2015 - 21:20
//Forma de usar
OD="O"
LocEndereco isarray of string
gLoOrigemLocalizado=False

IFEDT_CidadeOrigem=""ORCOD_LOC_ORIG=0
Info("Obrigatório informar a cidade de origem")
RETURN
END

IFEDT_EnderecoOrigem<>""
LocEndereco=CEP_FuncaoBuscarEndereco(EDT_EnderecoOrigem+" - "+EDT_CidadeOrigem,EDT_NumOrigem,"","")
IFArrayCount(LocEndereco) >0THEN
EDT_EnderecoOrigem=LocEndereco[1]// <--------------------- retorno do array LocEndereço
EDT_CidadeOrigem=LocEndereco[4]// <--------------------- retorno do array LocEndereço
//info(EDT_CidadeOrigem)
gLoOrigemLocalizado=True
ELSE
ExecuteProcess(BTN_Valida,trtClick)
END
ELSE
Info("Obrigatório informar o nome da rua de origem.")
END
>
Membre enregistré
3 655 messages
Popularité : +175 (223 votes)
Posté le 29 août 2015 - 21:21
ProcedureCEP_Rota(LOCALOrigem,LOCALDestino,LOCALDebugSN)

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

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

nVirgula isint=0

gbLocalizouRotaisboolean

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

GloRotaEncode isstring

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

//Norte
GloLatitudeNorte=""
GloLongitudeNorte=""

//Sul
GloLatitudeSul=""
GloLongitudeSul=""

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

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

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

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

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


ok isboolean=False

IFOrigem<>""ANDDestino<>""

ChangeCharset(charsetOccidental)// SEM ACENTO

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

Origem=Capitalize(WS_RemoveAcentos(Origem))

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

Destino=Capitalize(WS_RemoveAcentos(Destino))

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

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


//Rota
IFok=TrueTHEN

XmlResultado isstring=CEP_HTTPGetResult()

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



IFLength(XmlResultado) >0THEN

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

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

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

sXmlResultadoRetorno isstring=XmlResultado

//IMPORTANTE LIMPAR O XML

XmlResultado=CEP_RemoveCaracteresRota(XmlResultado)// retirou os steps

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

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


IFIniOSMode() =TrueTHEN

NoXml isstring=XMLExtractString(XmlResultado,"leg")

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

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

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

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

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

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


ELSE


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

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

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

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

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

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

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


END

END
gbLocalizouRota=True
ELSE

GloDestinoEndereco=""
GloDestinoEnderecoLongo=""

GloTempoDestino=""
GloDistanciaDestino=""
END

END


END

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

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

RESULT(GloVoceEnderecoLongo)
>
Membre enregistré
3 655 messages
Popularité : +175 (223 votes)
Posté le 29 août 2015 - 21:22
ProcedureCEP_ExtrairEndereco(endereco)

// endereco = "condominio edificio - rua sanito rocha, 261 - cristo rei, curitiba - pr, 800050-380, brasil"

sRua,sNumero,sBairro,sCidade,sEstado,sPais,sCep isstring=""

IFendereco<>""

endereco=Replace(endereco,"State Of ","",IgnoreCase)

//Separador - das 3 colunas
arrSplitArray isarray of strings
StringToArray(endereco,arrSplitArray," - ")
//FOR EACH string sExtracColunn, nRank of endereco SEPAREE by " - "
//
//add(arrSplitArray, sExtracColunn)
//
//END
IFArrayCount(arrSplitArray) =4

//Separador , da rua e numero
arrSplitRuaNumeroArray isarray of strings
StringToArray(arrSplitArray[2],arrSplitRuaNumeroArray,",")


IFArrayCount(arrSplitRuaNumeroArray) =1

sRua=arrSplitRuaNumeroArray[1];

sNumero="0";

ELSE IFArrayCount(arrSplitRuaNumeroArray) =2

sRua=arrSplitRuaNumeroArray[1];

IFPositionOccurrence(arrSplitRuaNumeroArray[2],"-",firstRank) >0THEN

arrSplitNumeroArray isarray of strings
StringToArray(arrSplitRuaNumeroArray[2],arrSplitNumeroArray,"-")

WHEN EXCEPTION IN
Media isint= (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 isarray of strings
StringToArray(arrSplitArray[3],arrSplitBairroCidadeArray,",")

IFArrayCount(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 isarray of strings
StringToArray(arrSplitArray[4],arrSplitEstadoCepPaisArray,",")

IFArrayCount(arrSplitEstadoCepPaisArray) =2

sEstado=arrSplitEstadoCepPaisArray[1];
sPais=arrSplitEstadoCepPaisArray[2];
sCep=""

ELSE IFArrayCount(arrSplitEstadoCepPaisArray)=3

sEstado=arrSplitEstadoCepPaisArray[1];
sCep=arrSplitEstadoCepPaisArray[2];
sPais=arrSplitEstadoCepPaisArray[3];
ELSE

sEstado=""
sCep=""
sPais=""

END
ELSE IFArrayCount(arrSplitArray) =3

//Separador , da rua e numero
arrSplitRuaNumeroArray isarray of strings
StringToArray(arrSplitArray[1],arrSplitRuaNumeroArray,",")


IFArrayCount(arrSplitRuaNumeroArray) =1

sRua=arrSplitRuaNumeroArray[1];

sNumero="0";

ELSE IFArrayCount(arrSplitRuaNumeroArray) =2

sRua=arrSplitRuaNumeroArray[1];

IFPositionOccurrence(arrSplitRuaNumeroArray[2],"-",firstRank) >0THEN

arrSplitNumeroArray isarray of strings
StringToArray(arrSplitRuaNumeroArray[2],arrSplitNumeroArray,"-")

WHEN EXCEPTION IN
Media isint= (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 isarray of strings
StringToArray(arrSplitArray[2],arrSplitBairroCidadeArray,",")

IFArrayCount(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 isarray of strings
StringToArray(arrSplitArray[3],arrSplitEstadoCepPaisArray,",")

IFArrayCount(arrSplitEstadoCepPaisArray) =2

sEstado=arrSplitEstadoCepPaisArray[1];
sPais=arrSplitEstadoCepPaisArray[2];
sCep=""

ELSE IFArrayCount(arrSplitEstadoCepPaisArray)=3

sEstado=arrSplitEstadoCepPaisArray[1];
sCep=arrSplitEstadoCepPaisArray[2];
sPais=arrSplitEstadoCepPaisArray[3];
ELSE

sEstado=""
sCep=""
sPais=""

END
ELSE IFArrayCount(arrSplitArray) =2

arrSplitRuaCidadeArray isarray of strings
StringToArray(arrSplitArray[1],arrSplitRuaCidadeArray,",")

sNumero="0";
IFArrayCount(arrSplitRuaCidadeArray) =1

sRua=arrSplitRuaCidadeArray[1];



ELSE IFArrayCount(arrSplitRuaCidadeArray) =2

sRua=arrSplitRuaCidadeArray[1];
sCidade=arrSplitRuaCidadeArray[2];

ELSE IFArrayCount(arrSplitRuaCidadeArray) =3

sRua=arrSplitRuaCidadeArray[1];
//--
IFPositionOccurrence(arrSplitRuaCidadeArray[2],"-",firstRank) >0THEN

arrSplitNumeroArray isarray of strings
StringToArray(arrSplitRuaCidadeArray[2],arrSplitNumeroArray,"-")

WHEN EXCEPTION IN
Media isint= (Val(arrSplitNumeroArray[1]) +Val(arrSplitNumeroArray[2])) /2
DO
sNumero=0
ELSE
sNumero=Media
END


ELSE

sNumero=arrSplitRuaCidadeArray[2];

END



//--
sCidade=arrSplitRuaCidadeArray[3];
END


arrSplitEstadoCepPaisArray isarray of strings
StringToArray(arrSplitArray[2],arrSplitEstadoCepPaisArray,",")
IFArrayCount(arrSplitEstadoCepPaisArray) =2

sEstado=arrSplitEstadoCepPaisArray[1];
sPais=arrSplitEstadoCepPaisArray[2];
sCep=""

ELSE IFArrayCount(arrSplitEstadoCepPaisArray)=3

sEstado=arrSplitEstadoCepPaisArray[1];
sCep=arrSplitEstadoCepPaisArray[2];
sPais=arrSplitEstadoCepPaisArray[3];
ELSE

sEstado=""
sCep=""
sPais=""

END

END

//Replace Estado
sEstado=Capitalize(Clip(sEstado))
IFsEstado<>""

IFsEstado="Acre"THEN
sEstado="AC"
ELSE IFsEstado="Alagoas"THEN
sEstado="AL"
ELSE IFsEstado="Amazonas"THEN
sEstado="AM"
ELSE IFsEstado="Amapa"THEN
sEstado="AP"
ELSE IFsEstado="Bahia"THEN
sEstado="BA"
ELSE IFsEstado="Ceara"THEN
sEstado="CE"
ELSE IFsEstado="Distrito Federal"THEN
sEstado="DF"
ELSE IFsEstado="Espirito Santo"THEN
sEstado="ES"
ELSE IFsEstado="Goias"THEN
sEstado="GO"
ELSE IFsEstado="Maranhao"THEN
sEstado="MA"
ELSE IFsEstado="Minas Gerais"THEN
sEstado="MG"
ELSE IFsEstado="Mato Grosso do Sul"THEN
sEstado="MS"
ELSE IFsEstado="Mato Grosso"THEN
sEstado="MT"
ELSE IFsEstado="Parana"THEN
sEstado="PR"
ELSE IFsEstado="Para"THEN
sEstado="PA"
ELSE IFsEstado="Paraiba"THEN
sEstado="PB"
ELSE IFsEstado="Pernambuco"THEN
sEstado="PE"
ELSE IFsEstado="Piaui"THEN
sEstado="PI"
ELSE IFsEstado="Rio de Janeiro"THEN
sEstado="RJ"
ELSE IFsEstado="Rio Grande DO Norte"THEN
sEstado="RN"
ELSE IFsEstado="Rondonia"THEN
sEstado="RO"
ELSE IFsEstado="Roraima"THEN
sEstado="RR"
ELSE IFsEstado="Rio Grande DO Sul"THEN
sEstado="RS"
ELSE IFsEstado="Santa Catarina"THEN
sEstado="SC"
ELSE IFsEstado="Sergipe"THEN
sEstado="SE"
ELSE IFsEstado="Sao Paulo"THEN
sEstado="SP"
ELSE IFsEstado="Tocantins"THEN
sEstado="TO"
END

END

END
arrResult isarray of strings

Add(arrResult,Capitalize(Clip(sRua)))
Add(arrResult,Clip(sNumero))
Add(arrResult,Capitalize(Clip(sBairro)))
Add(arrResult,Capitalize(Clip(sCidade)))
Add(arrResult,Upper(Clip(sEstado)))
Add(arrResult,Clip(sCep))
Add(arrResult,Capitalize(Clip(sPais)))


//Info(arrResult[1],arrResult[2],arrResult[3],arrResult[4],arrResult[5],arrResult[6],arrResult[7])


RESULTarrResult
>
Membre enregistré
3 655 messages
Popularité : +175 (223 votes)
Posté le 29 août 2015 - 21:23
WS_EnderecoDasCoordenadas
#######################

ProcedureWS_EnderecoDasCoordenadas(LOCALpLatitude isstring,LOCALpLongitude isstring,LOCALDebugSN)

ok isboolean=False

Endereco,RetJson isstring=""

IFpLatitude<>0ANDpLongitude<>0ANDpLatitude<>NullANDpLongitude<>NullTHEN

Url isstring="http://maps.googleapis.com/maps/api/geocode/json?latlng="+pLatitude+","+pLongitude+"&sensor=true"

IFDebugSN="S"
Info("01",Url)
END

ok=HTTPRequest(Url)

IFok=TrueTHEN

ChangeCharset(charsetOccidental)// SEM ACENTO


RetJson=HTTPGetResult(httpResult)
IFLength(RetJson) =0THEN

ok=False
ELSE

IFDebugSN="S"
Info(Url,RetJson)
END


TagEnd isstring="""formatted_address"" :"

i isint=PositionOccurrence(RetJson,TagEnd,firstRank,IgnoreCase) +Length(TagEnd)

Endereco=""

//Pega endereço (entre duas aspas)
IFi>0THEN
Endereco=ExtractString(RetJson[[i TO]],2,"""")
END

IFEndereco=""ORRetJson="ERRO"THEN
// busca por XML

Url="http://maps.googleapis.com/maps/api/geocode/xml?latlng="+pLatitude+","+pLongitude+"&sensor=true"

IFDebugSN="S"
Info("02",Url)
END


ok=HTTPRequest(Url)
IFok=TrueTHEN

RetXml isstring=HTTPGetResult(httpResult)

IFLength(RetXml) =0THEN

ok=False
ELSE

IFDebugSN="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>

IFPositionOccurrence(RetXml,"<formatted_address>",firstRank) >0THEN

//Endereço
nPosicaoInicial isint=PositionOccurrence(RetXml,"<formatted_address>",firstRank) +Length("<formatted_address>")
nPosicaoFinal isint=PositionOccurrence(RetXml,"</formatted_address>",firstRank) +Length("</formatted_address>")
nPosicaoFinal=nPosicaoFinal-nPosicaoInicial
Endereco=Middle(RetXml,nPosicaoInicial,nPosicaoFinal)


END
END
END
END
END
END

Endereco=WS_RemoveAcentos(Endereco)

END

RESULT(Endereco)
>
Membre enregistré
3 655 messages
Popularité : +175 (223 votes)
Posté le 29 août 2015 - 21:23
WS_EnderecoRetornaLatLon
#####################

ProcedureWS_EnderecoRetornaLatLon(LOCALEndereco)

ok isboolean=False

Retorno isstring=""

ChangeCharset(charsetOccidental)// SEM ACENTO

inicio,fim isint=0

//Exemplo: http://maps.google.com/maps/api/geocode/json?address=670+Rua+Dias+Rocha+Filho,+Alto+da+XV,+Curitiba,+PR&sensor=true

Endereco=NoAccent(Endereco)

Endereco=Replace(Endereco," ","+")

Endereco="http://maps.google.com/maps/api/geocode/xml?address="+Endereco+"&sensor=true"


ok=HTTPRequest(Endereco)


IFok=TrueTHEN

Retorno=HTTPGetResult(httpResult)

ChangeCharset(charsetOccidental)// SEM ACENTO

Retorno=WS_RemoveAcentos(Retorno)

Retorno=Replace(Retorno,"Matriz,","")

Retorno=Replace(Retorno,"Matriz","")


IFRetorno<>NullTHEN


Retorno=Replace(Retorno,Charact(34),"")

//info(Return_Json)
//Retorno Esperado
//12345678901234567890
//lat : -25.4259127,
//lng : -49.249879

IFPositionOccurrence(Retorno,"OVER_QUERY_LIMIT",firstRank,FromBeginning) >0THEN
NextTitle("Atenção")
Info("Excedeu a quantidade de pesquisas no google maps.")
ELSE

//Endereco
IFPositionOccurrence(Retorno,"<formatted_address>",firstRank,IgnoreCase) >0THEN
inicio=PositionOccurrence(Retorno,"<formatted_address>",firstRank,IgnoreCase) +19
fim=PositionOccurrence(Retorno,"</formatted_address>",firstRank,IgnoreCase)
GloEnderecoLongo=Middle(Retorno,inicio,fim-inicio)
END

//Latitude
IFPositionOccurrence(Retorno,"<lat>",firstRank,IgnoreCase) >0THEN
inicio=PositionOccurrence(Retorno,"<lat>",firstRank,IgnoreCase) +5
fim=PositionOccurrence(Retorno,"</lat>",firstRank,IgnoreCase) -1
GloLatitudeLocalizada=Val(Middle(Retorno,inicio,fim-inicio),"d")
END

//Longitude
IFPositionOccurrence(Retorno,"<lng>",firstRank,IgnoreCase) >0THEN
inicio=PositionOccurrence(Retorno,"<lng>",firstRank,IgnoreCase) +5
fim=PositionOccurrence(Retorno,"</lng>",firstRank,IgnoreCase) -1
GloLongitudeLocalizada=Val(Middle(Retorno,inicio,fim-inicio),"d")
END

//Retorno
Retorno=GloLatitudeLocalizada+";"+GloLongitudeLocalizada


END


END


END

RESULT(Retorno)
>
Membre enregistré
3 655 messages
Popularité : +175 (223 votes)
Posté le 29 août 2015 - 21:24
WS_GeoIpLatitudeLongitude
#####################

ProcedureWS_GeoIpLatitudeLongitude()

ok,achou isboolean=False

sUrl01 isstring="https://geoiptool.com/"

sUrl02 isstring="http://www.geoipview.com/"

nInicio,nFim isint=0

//Nome do Host: 4130757575.e.brasiltelecom.net.br
//IP Address: 177.6.166.73
//País: Brazil
//Código do país: BR (BRA)
//Região: Parana
//Cidade: Curitiba
//Hora local: 18 Jul 15:43 (BRT-0300)
//Código postal: None
//Latitude: -25.4167
//Longitude: -49.25

Retorno is Buffer

sHost,IP,sCidade,sEstado,sPais,sCodPais,sHoraLocal,sCodigoPostal,sLatitude,sLongitude isstring=""

HTTPTimeOut(10000)

ok=HTTPRequest(sUrl01)

IFok=TrueTHEN

Retorno=HTTPGetResult(httpResult)

//ok = fSaveBuffer("c:\temp\geoip.txt",Retorno)

IFPositionOccurrence(Retorno,"<html",firstRank,FromBeginning) =0THEN

Retorno=""

ELSE

//Limpa Texto
Retorno=Lower(Retorno)
Retorno=WS_RemoveAcentos(Retorno)
Retorno=Replace(Retorno,"'","")
Retorno=Replace(Retorno,Charact(34),"")
Retorno=Replace(Retorno,CRLF,"")
Retorno=Replace(Retorno,Charact(9),"")
Retorno=Replace(Retorno,Charact(13),"")
Retorno=Replace(Retorno,Charact(10),"")
Retorno=Replace(Retorno,Charact(13)+Charact(10),"")
Retorno=Replace(Retorno,"</span><span><td>","")
Retorno=Replace(Retorno,"</span><span>","")
Retorno=Replace(Retorno,"</td></span></div>","")
Retorno=Replace(Retorno,"<div class=data-item>","")//
Retorno=Replace(Retorno,"<div Class=data-item><span Class=bold>","")
Retorno=Replace(Retorno,"<div class=data-item><span class=bold>","")
Retorno=Replace(Retorno,"</span></div><div Class=data-item><span Class=bold>","")
Retorno=Replace(Retorno,"</span></div><div class=data-item><span class=bold>","")
Retorno=Replace(Retorno,"<img src=../static/img/flags/br.gif>","")
Retorno=Replace(Retorno,"</span></div>","")
Retorno=Lower(Retorno)


IFPositionOccurrence(Retorno,"<div class=sidebar-data hidden-xs hidden-sm style=margin-top: 5px>",firstRank,FromBeginning) >0THEN

nInicio=PositionOccurrence(Retorno,"<div class=sidebar-data hidden-xs hidden-sm style=margin-top: 5px>",firstRank,FromBeginning)

IFPositionOccurrence(Retorno,"<div class=mobile-button-display-hidden data-value=0>",firstRank,FromBeginning) >0THEN

nFim=PositionOccurrence(Retorno,"<div class=mobile-button-display-hidden data-value=0>",firstRank,FromBeginning)

Retorno=Middle(Retorno,nInicio,nFim-nInicio)

IFPositionOccurrence(Retorno,"ip address:",firstRank,FromBeginning) >0AND...
PositionOccurrence(Retorno,"latitude:",firstRank,FromBeginning) >0AND...
PositionOccurrence(Retorno,"longitude:",firstRank,FromBeginning) >0
achou=True
ELSE
achou=False
END

ELSE

IFPositionOccurrence(Retorno,"<div class=col-md-8 column>",firstRank,FromBeginning) >0THEN

nFim=PositionOccurrence(Retorno,"<div class=col-md-8 column>",firstRank,FromBeginning)

Retorno=Middle(Retorno,nInicio,nFim-nInicio)

IFPositionOccurrence(Retorno,"ip address:",firstRank,FromBeginning) >0AND...
PositionOccurrence(Retorno,"latitude:",firstRank,FromBeginning) >0AND...
PositionOccurrence(Retorno,"longitude:",firstRank,FromBeginning) >0
achou=True
ELSE
achou=False
END

END

END

IFachou=True

//info(Retorno)

//Campos de retorno
//sHost, IP, sCidade, sEstado, sPais, sCodPais, sHoraLocal, sCodigoPostal, sLatitude, sLongitude

nInicio=PositionOccurrence(Retorno,"hostname:",firstRank,FromBeginning)+Length("hostname:")
nFim=PositionOccurrence(Retorno,"ip address:",firstRank,FromBeginning)
sHost=Middle(Retorno,nInicio,nFim-nInicio)

sHost=Replace(sHost,"</span><span><td>","")
sHost=Replace(sHost,"</span><span>","")
sHost=Replace(sHost,"</td></span></div>","")
sHost=Replace(sHost,"<div class=data-item>","")//
sHost=Replace(sHost,"<div Class=data-item><span Class=bold>","")
sHost=Replace(sHost,"<div class=data-item><span class=bold>","")
sHost=Replace(sHost,"</span></div><div Class=data-item><span Class=bold>","")
sHost=Replace(sHost,"</span></div><div class=data-item><span class=bold>","")
sHost=Replace(sHost,"<img src=../static/img/flags/br.gif>","")
sHost=Replace(sHost,"</span></div>","")

Retorno=Middle(Retorno,nFim,Length(Retorno))

nInicio=PositionOccurrence(Retorno,"ip address:",firstRank,FromBeginning)+Length("ip address:")
nFim=PositionOccurrence(Retorno,"country:",firstRank,FromBeginning)
IP=Middle(Retorno,nInicio,nFim-nInicio)

IP=Replace(IP,"</span><span><td>","")
IP=Replace(IP,"</span><span>","")
IP=Replace(IP,"</td></span></div>","")
IP=Replace(IP,"<div class=data-item>","")//
IP=Replace(IP,"<div Class=data-item><span Class=bold>","")
IP=Replace(IP,"<div class=data-item><span class=bold>","")
IP=Replace(IP,"</span></div><div Class=data-item><span Class=bold>","")
IP=Replace(IP,"</span></div><div class=data-item><span class=bold>","")
IP=Replace(IP,"<img src=../static/img/flags/br.gif>","")
IP=Replace(IP,"</span></div>","")


Retorno=Middle(Retorno,nFim,Length(Retorno))

nInicio=PositionOccurrence(Retorno,"country:",firstRank,FromBeginning)+Length("country:")
nFim=PositionOccurrence(Retorno,"country code:",firstRank,FromBeginning)
sPais=Middle(Retorno,nInicio,nFim-nInicio)

sPais=Replace(sPais,"</span><span><td>","")
sPais=Replace(sPais,"</span><span>","")
sPais=Replace(sPais,"</td></span></div>","")
sPais=Replace(sPais,"<div class=data-item>","")//
sPais=Replace(sPais,"<div Class=data-item><span Class=bold>","")
sPais=Replace(sPais,"<div class=data-item><span class=bold>","")
sPais=Replace(sPais,"</span></div><div Class=data-item><span Class=bold>","")
sPais=Replace(sPais,"</span></div><div class=data-item><span class=bold>","")
sPais=Replace(sPais,"<img src=../static/img/flags/br.gif>","")
sPais=Replace(sPais,"</span></div>","")

Retorno=Middle(Retorno,nFim,Length(Retorno))

nInicio=PositionOccurrence(Retorno,"country code:",firstRank,FromBeginning)+Length("country code:")
nFim=PositionOccurrence(Retorno,"region:",firstRank,FromBeginning)
sCodPais=Middle(Retorno,nInicio,nFim-nInicio)

sCodPais=Replace(sCodPais,"</span><span><td>","")
sCodPais=Replace(sCodPais,"</span><span>","")
sCodPais=Replace(sCodPais,"</td></span></div>","")
sCodPais=Replace(sCodPais,"<div class=data-item>","")//
sCodPais=Replace(sCodPais,"<div Class=data-item><span Class=bold>","")
sCodPais=Replace(sCodPais,"<div class=data-item><span class=bold>","")
sCodPais=Replace(sCodPais,"</span></div><div Class=data-item><span Class=bold>","")
sCodPais=Replace(sCodPais,"</span></div><div class=data-item><span class=bold>","")
sCodPais=Replace(sCodPais,"<img src=../static/img/flags/br.gif>","")
sCodPais=Replace(sCodPais,"</span></div>","")

Retorno=Middle(Retorno,nFim,Length(Retorno))

nInicio=PositionOccurrence(Retorno,"region:",firstRank,FromBeginning)+Length("region:")
nFim=PositionOccurrence(Retorno,"city:",firstRank,FromBeginning)
sEstado=Middle(Retorno,nInicio,nFim-nInicio)

sEstado=Replace(sEstado,"</span><span><td>","")
sEstado=Replace(sEstado,"</span><span>","")
sEstado=Replace(sEstado,"</td></span></div>","")
sEstado=Replace(sEstado,"<div class=data-item>","")//
sEstado=Replace(sEstado,"<div Class=data-item><span Class=bold>","")
sEstado=Replace(sEstado,"<div class=data-item><span class=bold>","")
sEstado=Replace(sEstado,"</span></div><div Class=data-item><span Class=bold>","")
sEstado=Replace(sEstado,"</span></div><div class=data-item><span class=bold>","")
sEstado=Replace(sEstado,"<img src=../static/img/flags/br.gif>","")
sEstado=Replace(sEstado,"</span></div>","")

Retorno=Middle(Retorno,nFim,Length(Retorno))

nInicio=PositionOccurrence(Retorno,"city:",firstRank,FromBeginning)+Length("city:")
nFim=PositionOccurrence(Retorno,"local time:",firstRank,FromBeginning)
sCidade=Middle(Retorno,nInicio,nFim-nInicio)

sCidade=Replace(sCidade,"</span><span><td>","")
sCidade=Replace(sCidade,"</span><span>","")
sCidade=Replace(sCidade,"</td></span></div>","")
sCidade=Replace(sCidade,"<div class=data-item>","")//
sCidade=Replace(sCidade,"<div Class=data-item><span Class=bold>","")
sCidade=Replace(sCidade,"<div class=data-item><span class=bold>","")
sCidade=Replace(sCidade,"</span></div><div Class=data-item><span Class=bold>","")
sCidade=Replace(sCidade,"</span></div><div class=data-item><span class=bold>","")
sCidade=Replace(sCidade,"<img src=../static/img/flags/br.gif>","")
sCidade=Replace(sCidade,"</span></div>","")

Retorno=Middle(Retorno,nFim,Length(Retorno))

nInicio=PositionOccurrence(Retorno,"local time:",firstRank,FromBeginning)+Length("local time:")
nFim=PositionOccurrence(Retorno,"postal code:",firstRank,FromBeginning)
sHoraLocal=Middle(Retorno,nInicio,nFim-nInicio)

sHoraLocal=Replace(sHoraLocal,"</span><span><td>","")
sHoraLocal=Replace(sHoraLocal,"</span><span>","")
sHoraLocal=Replace(sHoraLocal,"</td></span></div>","")
sHoraLocal=Replace(sHoraLocal,"<div class=data-item>","")//
sHoraLocal=Replace(sHoraLocal,"<div Class=data-item><span Class=bold>","")
sHoraLocal=Replace(sHoraLocal,"<div class=data-item><span class=bold>","")
sHoraLocal=Replace(sHoraLocal,"</span></div><div Class=data-item><span Class=bold>","")
sHoraLocal=Replace(sHoraLocal,"</span></div><div class=data-item><span class=bold>","")
sHoraLocal=Replace(sHoraLocal,"<img src=../static/img/flags/br.gif>","")
sHoraLocal=Replace(sHoraLocal,"</span></div>","")

Retorno=Middle(Retorno,nFim,Length(Retorno))

nInicio=PositionOccurrence(Retorno,"postal code:",firstRank,FromBeginning)+Length("postal code:")
nFim=PositionOccurrence(Retorno,"latitude:",firstRank,FromBeginning)
sCodigoPostal=Middle(Retorno,nInicio,nFim-nInicio)

sCodigoPostal=Replace(sCodigoPostal,"</span><span><td>","")
sCodigoPostal=Replace(sCodigoPostal,"</span><span>","")
sCodigoPostal=Replace(sCodigoPostal,"</td></span></div>","")
sCodigoPostal=Replace(sCodigoPostal,"<div class=data-item>","")//
sCodigoPostal=Replace(sCodigoPostal,"<div Class=data-item><span Class=bold>","")
sCodigoPostal=Replace(sCodigoPostal,"<div class=data-item><span class=bold>","")
sCodigoPostal=Replace(sCodigoPostal,"</span></div><div Class=data-item><span Class=bold>","")
sCodigoPostal=Replace(sCodigoPostal,"</span></div><div class=data-item><span class=bold>","")
sCodigoPostal=Replace(sCodigoPostal,"<img src=../static/img/flags/br.gif>","")
sCodigoPostal=Replace(sCodigoPostal,"</span></div>","")

Retorno=Middle(Retorno,nFim,Length(Retorno))

nInicio=PositionOccurrence(Retorno,"latitude:",firstRank,FromBeginning)+Length("latitude:")
nFim=PositionOccurrence(Retorno,"longitude:",firstRank,FromBeginning)
sLatitude=Middle(Retorno,nInicio,nFim-nInicio)

sLatitude=Replace(sLatitude,"</span><span><td>","")
sLatitude=Replace(sLatitude,"</span><span>","")
sLatitude=Replace(sLatitude,"</td></span></div>","")
sLatitude=Replace(sLatitude,"<div class=data-item>","")//
sLatitude=Replace(sLatitude,"<div Class=data-item><span Class=bold>","")
sLatitude=Replace(sLatitude,"<div class=data-item><span class=bold>","")
sLatitude=Replace(sLatitude,"</span></div><div Class=data-item><span Class=bold>","")
sLatitude=Replace(sLatitude,"</span></div><div class=data-item><span class=bold>","")
sLatitude=Replace(sLatitude,"<img src=../static/img/flags/br.gif>","")
sLatitude=Replace(sLatitude,"</span></div>","")

Retorno=Middle(Retorno,nFim,Length(Retorno))

nInicio=PositionOccurrence(Retorno,"longitude:",firstRank,FromBeginning)+Length("longitude:")
nFim=20
sLongitude=Middle(Retorno,nInicio,nFim)
sLongitude=Replace(sLongitude,"</span></div><","")

sLongitude=Replace(sLongitude,"</span><span><td>","")
sLongitude=Replace(sLongitude,"</span><span>","")
sLongitude=Replace(sLongitude,"</td></span></div>","")
sLongitude=Replace(sLongitude,"<div class=data-item>","")//
sLongitude=Replace(sLongitude,"<div Class=data-item><span Class=bold>","")
sLongitude=Replace(sLongitude,"<div class=data-item><span class=bold>","")
sLongitude=Replace(sLongitude,"</span></div><div Class=data-item><span Class=bold>","")
sLongitude=Replace(sLongitude,"</span></div><div class=data-item><span class=bold>","")
sLongitude=Replace(sLongitude,"<img src=../static/img/flags/br.gif>","")
sLongitude=Replace(sLongitude,"</span></div>","")
sLongitude=Replace(sLongitude,"</div><div cla","")
sLongitude=Replace(sLongitude,"</div><div Cla","")

Retorno="Latitude: "+sLatitude+" Longitude: "+sLongitude

END

END

END

END

IFRetorno=""THEN

ok=HTTPRequest(sUrl02)

Retorno=HTTPGetResult(httpResult)

ok=fSaveBuffer("c:\temp\geoip.txt",Retorno)

IFPositionOccurrence(Retorno,"<html",firstRank,FromBeginning) =0THEN

Retorno=""

ELSE

Retorno=Replace(Retorno,Charact(34),"")
Retorno=Replace(Retorno,"'","")
Retorno="Latitude: "+sLatitude+" Longitude: "+sLongitude

END

END

//info(sHost, IP, sCidade, sEstado, sPais, sCodPais, sHoraLocal, sCodigoPostal, sLatitude, sLongitude )

//global
gslatitude=sLatitude
gslongitude=sLongitude
gsCidade=Upper(sCidade)
gsUf=Upper(sEstado)

IFIP<>""
gsIpFixo=IP
END

//4130757575.e.brasiltelecom.net.br
//177.6.166.73
//curitiba
//parana
//brazil
//br (bra)
//18 jul 18:22 (brt-0300)
//none
//-25.4167
//-49.25

RESULT(Retorno)
>
Membre enregistré
3 655 messages
Popularité : +175 (223 votes)
Posté le 29 août 2015 - 23:15
:merci:>
Membre enregistré
3 655 messages
Popularité : +175 (223 votes)
Posté le 25 avril 2017 - 20:43
COMPLEMENTO:

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

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