PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 25 → Wx - Busca Endereço Rota e Endereço das coordendas
Wx - Busca Endereço Rota e Endereço das coordendas
Iniciado por adrianoboller, 29,ago. 2015 21:18 - 8 respuestas
Miembro registrado
3.651 mensajes
Popularité : +175 (223 votes)
Publicado el 29,agosto 2015 - 21:18
Procedure CEP_FuncaoBuscarEndereco(sEndereco, sNumero, sCidade, sUF)

//endereco = "Jose gulin"
//Numero = 500
//cidade = "curitiba"
//UF ="PR"
sEnderecoLongo is string
arrResult1 is array of strings
EnderecoInicial, sEnderecoLocalizadoLongo is string = ""

IF sNumero = 0 OR sNumero = "" OR IsNumeric(sNumero) = False THEN
sNumero = 10
END

IF sUF = "" THEN
sUF = "PR"
END

IF sNumero = 0 OR sNumero = "" OR IsNumeric(sNumero) = False THEN
sNumero = 10
END


//Busca Alias + Rota

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

sEnderecoLongo = CEP_Rota(EnderecoInicial,EnderecoInicial,"")

IF sEnderecoLongo <> "" AND sEnderecoLongo <> "ERRO" THEN

arrResult1 = CEP_ExtrairEndereco(sEnderecoLongo)

ELSE
ArrayDeleteAll(arrResult1)

END

RESULT(arrResult1)
Miembro registrado
3.651 mensajes
Popularité : +175 (223 votes)
Publicado el 29,agosto 2015 - 21:20
//Forma de usar
OD = "O"
LocEndereco is array of string
gLoOrigemLocalizado = False

IF EDT_CidadeOrigem = "" OR COD_LOC_ORIG = 0
Info("Obrigatório informar a cidade de origem")
RETURN
END

IF EDT_EnderecoOrigem <> ""
LocEndereco = CEP_FuncaoBuscarEndereco(EDT_EnderecoOrigem +" - "+ EDT_CidadeOrigem,EDT_NumOrigem,"","")
IF ArrayCount(LocEndereco) > 0 THEN
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
Miembro registrado
3.651 mensajes
Popularité : +175 (223 votes)
Publicado el 29,agosto 2015 - 21:21
Procedure CEP_Rota(LOCAL Origem, LOCAL Destino, LOCAL DebugSN)

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

IF Origem <> "" AND Destino = "" THEN
Destino = Origem
END

nVirgula is int = 0

gbLocalizouRota is boolean

//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

GloRotaEncode is string

//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 is boolean = False

IF Origem <> "" AND Destino <> ""

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 is string = "http://maps.googleapis.com/maps/api/directions/xml?origin="+Origem+"&destination="+Destino+"&sensor=false&mode=driving"

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


//Rota
IF ok = True THEN

XmlResultado is string = CEP_HTTPGetResult()

IF PositionOccurrence(XmlResultado,"<status>OK</status>",firstRank,FromBeginning) > 0 OR PositionOccurrence(XmlResultado,"<status>ok</status>",firstRank,FromBeginning) > 0



IF Length(XmlResultado) > 0 THEN

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

IF DebugSN = "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 is string = XmlResultado

//IMPORTANTE LIMPAR O XML

XmlResultado = CEP_RemoveCaracteresRota(XmlResultado) // retirou os steps

IF DebugSN ="S" THEN
Info("Retorno XML Busca Origem",XmlResultado)
END
//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)
//////////////////////////////////////////////////////////////////////////////////////


IF IniOSMode() = True THEN

NoXml is string = 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 is string = 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")
IF Val(XMLExtractString(NoXml1,"lat")) < 0
GloVoceLatitude = XMLExtractString(NoXml1,"lat")
GloVoceLongitude = XMLExtractString(NoXml1,"lng")
END

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


ELSE


//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
GloVoceLatitude = XmlDoc02.leg.start_location.lat
GloVoceLongitude = XmlDoc02.leg.start_location.lng
END

//Destino
IF XmlDoc02.leg.end_location.lat < 0 THEN
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

IF DebugSN = "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 =>>> ( - )
IF CEP_QtdeOccurrence(GloVoceEnderecoLongo," - ") = 1
GloVoceEndereco = ""
GloVoceNumero = ""
GloVoceEnderecoLongo = "ERRO"
GloVoceLatitude = 0
GloVoceLongitude = 0
END
////Exemplo: Curitiba - Parana =>>> ( - )
IF CEP_QtdeOccurrence(GloDestinoEnderecoLongo," - ") = 1
GloDestinoEndereco = ""
GloDestinoNumero = ""
GloDestinoEnderecoLongo = "ERRO"
END
IF DebugSN = "S"
IF GloVoceEnderecoLongo = "ERRO" OR GloDestinoEnderecoLongo = "ERRO"
Info("Endereço inválido")
END
END

RESULT(GloVoceEnderecoLongo)
Miembro registrado
3.651 mensajes
Popularité : +175 (223 votes)
Publicado el 29,agosto 2015 - 21:22
Procedure CEP_ExtrairEndereco(endereco)

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

sRua, sNumero, sBairro, sCidade, sEstado, sPais, sCep is string = ""

IF endereco <> ""

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

//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) = 4

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


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[3], arrSplitBairroCidadeArray,",")

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[4], arrSplitEstadoCepPaisArray,",")

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
ELSE IF ArrayCount(arrSplitArray) = 3

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


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,",")

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,",")

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
ELSE IF ArrayCount(arrSplitArray) = 2

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

sNumero = "0";
IF ArrayCount(arrSplitRuaCidadeArray) = 1

sRua = arrSplitRuaCidadeArray[1];



ELSE IF ArrayCount(arrSplitRuaCidadeArray) = 2

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

ELSE IF ArrayCount(arrSplitRuaCidadeArray) = 3

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

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

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


ELSE

sNumero = arrSplitRuaCidadeArray[2];

END



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


arrSplitEstadoCepPaisArray is array of strings
StringToArray(arrSplitArray[2], arrSplitEstadoCepPaisArray,",")
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

//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

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, 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])


RESULT arrResult
Miembro registrado
3.651 mensajes
Popularité : +175 (223 votes)
Publicado el 29,agosto 2015 - 21:23
WS_EnderecoDasCoordenadas
#######################

Procedure WS_EnderecoDasCoordenadas(LOCAL pLatitude is string, LOCAL pLongitude is string, LOCAL DebugSN)

ok is boolean = False

Endereco, RetJson is string = ""

IF pLatitude <> 0 AND pLongitude <> 0 AND pLatitude <> Null AND pLongitude <> Null THEN

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

IF DebugSN = "S"
Info("01",Url)
END

ok = HTTPRequest(Url)

IF ok = True THEN

ChangeCharset(charsetOccidental) // SEM ACENTO


RetJson = HTTPGetResult(httpResult)
IF Length(RetJson) = 0 THEN

ok= False
ELSE

IF DebugSN = "S"
Info(Url,RetJson)
END


TagEnd is string = """formatted_address"" :"

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

Endereco = ""

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

IF Endereco = "" OR RetJson = "ERRO" THEN
// busca por XML

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

IF DebugSN = "S"
Info("02",Url)
END


ok = HTTPRequest(Url)
IF ok = True THEN

RetXml is string = HTTPGetResult(httpResult)

IF Length(RetXml) = 0 THEN

ok= False
ELSE

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

//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)


END
END
END
END
END
END

Endereco = WS_RemoveAcentos(Endereco)

END

RESULT (Endereco)
Miembro registrado
3.651 mensajes
Popularité : +175 (223 votes)
Publicado el 29,agosto 2015 - 21:23
WS_EnderecoRetornaLatLon
#####################

Procedure WS_EnderecoRetornaLatLon(LOCAL Endereco)

ok is boolean = False

Retorno is string = ""

ChangeCharset(charsetOccidental) // SEM ACENTO

inicio, fim is int = 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)


IF ok = True THEN

Retorno = HTTPGetResult(httpResult)

ChangeCharset(charsetOccidental) // SEM ACENTO

Retorno = WS_RemoveAcentos(Retorno)

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

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


IF Retorno <> Null THEN


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

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

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

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

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

//Longitude
IF PositionOccurrence(Retorno,"<lng>",firstRank,IgnoreCase) > 0 THEN
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)
Miembro registrado
3.651 mensajes
Popularité : +175 (223 votes)
Publicado el 29,agosto 2015 - 21:24
WS_GeoIpLatitudeLongitude
#####################

Procedure WS_GeoIpLatitudeLongitude()

ok, achou is boolean = False

sUrl01 is string = "https://geoiptool.com/"

sUrl02 is string = "http://www.geoipview.com/"

nInicio, nFim is int = 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 is string = ""

HTTPTimeOut(10000)

ok = HTTPRequest(sUrl01)

IF ok = True THEN

Retorno = HTTPGetResult(httpResult)

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

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

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)


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

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

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

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

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

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

ELSE

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

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

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

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

END

END

IF achou = 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

IF Retorno = "" THEN

ok = HTTPRequest(sUrl02)

Retorno = HTTPGetResult(httpResult)

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

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

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)

IF IP <> ""
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)
Miembro registrado
3.651 mensajes
Popularité : +175 (223 votes)
Publicado el 29,agosto 2015 - 23:15
:merci:
Miembro registrado
3.651 mensajes
Popularité : +175 (223 votes)
Publicado el 25,abril 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/