miércoles, abril 02, 2014

Genexus Obtener Coordenadas

// En el evento start capturo información  para mostrar en el punto de referencia
Event Start
&datdireccion           = &empresa.EmpDireccion  // &datdireccion => variable a la que cargo 
&datinfadicional        = &empresa.EmpInfAdicional
&datinfowinlink         = &empresa.EmpInfowinLink         // url
&datpointinfowinlinkdsc = &empresa.EmpPointInfowinLinkDsc // texto para mostrar en el url al que apunta el link
&datpointinfowinimg     = &empresa.EmpUrlImgInicio // mostrar el logo
&dattelefonos           = &empresa.EmpTelefonos
&datemail               = &empresa.EmpEmail
do 'Geocod'
EndEvent

// en el sub
Sub 'Geocod'
&httpclient.Host = 'maps.google.com'
&httpclient.BaseUrl = '/maps/api/geocode/'
&postvar = 'xml?address=' + &datdireccion + '&sensor=false'  // acá uso la variable con la dirección
&httpclient.Execute('GET',&postvar)
&var = &httpclient.ToString()
&xmlreader.OpenFromString(&var)
&xmlreader.Read()
&xmlreader.ReadType(1,'lat')
&lat = &xmlreader.Value                          // obtiene latitud
&xmlreader.ReadType(1,'lng')
&long = &xmlreader.Value                  // obtiene longitud
GoogleMapControl1.Latitude = &lat
GoogleMapControl1.Longitude = &long

// utilizo las variables de latitud y longitud para marcar el punto y mostrar la información leída desde mi base de datos
&GxMapPoint.PointLat = &lat  /
&GxMapPoint.PointLong = &long
&GxMapPoint.PointInfowinTit = &datnombre
&GxMapPoint.PointInfowinDesc = &datinfadicional
&GxMapPoint.PointInfowinLink = &datinfowinlink
&GxMapPoint.PointInfowinLinkDsc = &datpointinfowinlinkdsc
&GxMapPoint.PointInfowinImg = &datpointinfowinimg 
&GxMapData.Points.Add(&GxMapPoint) 
EndSub

No hay comentarios: