FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Coordenadas geogr谩ficas
Posts: 29
Joined: Mon Jan 14, 2019 11:43 AM

Coordenadas geogr谩ficas

Posted: Sun Jun 07, 2020 04:15 PM

Hola grupo

  Estoy buscando una funci贸n, que al pasarle  una direcci贸n me devuelva, la longitud y  latitud geogr谩fica, he estado haciendo pruebas con una funci贸n del master Navarro, funciona algunas veces y otra no, la direcci贸n est谩 bien, algo falla, me pueden ayudar ?

Function GeoCoordenadas( cPostal_Code, cStreet, cNumber, cLocality, cState)

Local cWeb := "http://maps.google.es/maps/place/"
local cMap
local cRet := ""
local oOle
local nPos1
local nPos2
local aCoor := { 0, 0, 0 }
local cNation:="Spain"

cPostal_Code := StrTran( AllTrim( cPostal_Code ), ' ', '+' )
cStreet := StrTran( AllTrim( cStreet ), ' ', '+' )
cNumber := StrTran( AllTrim( cNumber ), ' ', '+' )
cLocality := StrTran( AllTrim( cLocality ), ' ', '+' )
cState := StrTran( AllTrim( cState ), ' ', '+' )
cNation := StrTran( AllTrim( cNation ), ' ', '+' )
cMap := AllTrim( cPostal_Code ) + "+" + AllTrim( cStreet ) + "+" + ;
AllTrim( cNumber ) + "+" + AllTrim( cLocality ) + "+" + ;
AllTrim( cState ) + "+" + AllTrim( cNation )
oOle := CreateObject("Winhttp.WinHttpRequest.5.1")
oOle:Open( "GET", cWeb + AllTrim( cMap ), .F. )
oOle:Send()
cURL := oOle:ResponseText
nPos1 := At( "/@", cUrl )

Msginfo(cWeb + AllTrim( cMap ))

if !Empty( nPos1 )
nPos2 := At( "/data", cUrl )
cRet := Substr( cUrl, nPos1, nPos2 - nPos1 )
if !Empty( nPos2 )
cRet := StrTran( cRet, "/@", "" )
aCoor := hb_ATokens( cRet, "," )
endif
endif

   aCoor := { aCoor[ 1 ], aCoor[ 2 ] }

 //  Msginfo( aCoor[ 1 ])
 //  Msginfo( aCoor[ 2 ])

Return aCoor

Un saludo,
Gabriel

Posts: 601
Joined: Wed Jul 04, 2007 03:51 PM

Re: Coordenadas geogr谩ficas

Posted: Mon Jun 08, 2020 12:58 PM
Hola, c贸mo est谩s?
Yo tengo el siguiente c贸digo que lo uso hace bastantes a帽os, pero del mismo modo, no siempre me ubica las coordenadas.
Lo dejo as铆 puedes probarlo.

Code (fw): Select all Collapse
// GEOLOCALIZACION DE DIRECCION //
Function ConsultoDireccion(Calle,Localidad,Provincia,Pais)

cCalle 聽 聽:=STRTRAN(Calle 聽 聽," ","%20")
cLocalidad:=STRTRAN(Localidad," ","%20")
cProvincia:=STRTRAN(Provincia," ","%20")
cPais 聽 聽 :=STRTRAN(Pais 聽 聽 ," ","%20")

cCalle 聽 聽:=ALLTRIM(cCalle)
cLocalidad:=ALLTRIM(cLocalidad)
cProvincia:=ALLTRIM(cProvincia)
cPais 聽 聽 :=ALLTRIM(cPais)

// URL Sin Key del API de google maps
cUrl:="https://maps.googleapis.com/maps/api/geocode/xml?address="+cCalle+" "+cLocalidad+" "+cProvincia+" "+cPais+"&sensor=false"

// URL Con Key del API de google maps
//cUrl:="https://maps.googleapis.com/maps/api/geocode/xml?address="+cCalle+" "+cLocalidad+" "+cProvincia+" "+cPais+"&sensor=false&key=AQUI_VA_LA_CLAVE" 

aCoordenadas:={}

oFe:=CreateObject("MSXML2.ServerXmlHttp")
IF Hb_IsObject(oFe)
聽 聽oFe:Open("GET",cUrl,.F.)
聽 聽oFe:Send()
聽 聽cTexto1 := oFe:ResponseText

聽 聽Private oXmlDoc := TXmlDocument():New()
聽 聽Private oXmlNode

聽 聽oXMlDoc:READ(cTexto1)

聽 聽oXmlNode 聽:= oXmlDoc:FindFirst("status")
聽 聽cValor 聽 聽:= oXmlNode:cData

聽 聽IF cValor="ZERO_RESULTS"
聽 聽 聽 MsgInfo("Atenci贸n: Direcci贸n no encontrada, cambie los par谩metros y vuelva a intentarlo.","Por favor verifique")
聽 聽 聽 Return aCoordenadas
聽 聽ENDIF

聽 聽IF cValor<>"OK"
聽 聽 聽 MsgInfo("Atenci贸n: Direcci贸n no encontrada, cambie los par谩metros y vuelva a intentarlo.","Por favor verifique")
聽 聽 聽 Return aCoordenadas
聽 聽ENDIF

聽 聽oXmlNode 聽:= oXmlDoc:FindFirst("lat")
聽 聽cLatitud 聽:= oXmlNode:cData

聽 聽oXmlNode 聽:= oXmlDoc:FindFirst("lng")
聽 聽cLongitud := oXmlNode:cData

聽 聽AADD(aCoordenadas, cLatitud 聽)
聽 聽AADD(aCoordenadas, cLongitud )

ENDIF

Return aCoordenadas
//


Puede que google limite la cantidad de consultas permitidas. Para trabajar sin l铆mite de consultas posiblemente tengas que generar una Key del Api de google maps.

Saludos,
Ojeda Esteban Eduardo.

Buenos Aires - Argentina.

FWH - PellesC - DBF/CDX - ADS - Gloriosos .Bat - MySql - C# .net - FastReport

Skype: jreduojeda
Posts: 29
Joined: Mon Jan 14, 2019 11:43 AM

Re: Coordenadas geogr谩ficas

Posted: Fri Jun 12, 2020 03:00 PM

Gracias por la respuesta, pasa igual que con el c贸digo del master Navarro, algunas veces funciona y otras no, a ver si alguien nos puede ayudar ?

Un saludo,
Gabriel

Continue the discussion