Coordenadas geográficas
Posted: Sun Jun 07, 2020 4: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
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