Está en la página 1de 4

Google Maps en un formulario de VFP

Por Luis Mara Guayn, Tucumn, Argentina

Ya es por todos conocido que con Visual FoxPro podemos hacer muchas cosas. Una de ellas es incorporar un control Explorador Web en un formulario y utilizar cdigo HTML y JavaScript. Esto ya lo public mi amigo Antonio Muoz de Burgos y Caravaca en su artculo "Control del Explorador Web (HTML & JS & VFP)". En este artculo, vamos a ver un ejemplo de como incorporar dinmicamente cdigo HTML y JavaScript, que nos permita navegar por Google Maps y poder desplazarnos virtualmente a diversos lugares del mundo a bordo de nuestro velz y querido zorro ;-) Lo primero que vamos a utilizar en este ejemplo, es una tabla con algunos lugares de interes, con sus respectivas coordenadas georeferenciales (latitud y longitud) y el nivel de acercamiento. Con estos datos, generaremos una pgina HTML que mostraremos en un control Explorador Web que incluiremos en nuestro formulario. El cdigo completo de este ejemplo es el siguiente:
PUBLIC oMiForm oMiForm = CREATEOBJECT("MiForm") oMiForm.SHOW RETURN DEFINE CLASS MiForm AS FORM HEIGHT = 365 WIDTH = 475 AUTOCENTER = .T. CAPTION = "Ejemplo con Google Maps" NAME = "MiForm" SetPoint = "" SHOWWINDOW = 2 ADD OBJECT cboDescrip AS COMBOBOX WITH ; ROWSOURCETYPE = 6, ROWSOURCE = "MisLugares.descri", ; HEIGHT = 24, LEFT = 12, TOP = 12, WIDTH = 330, ; STYLE = 2, NAME = "cboDescrip" ADD OBJECT cmdMostrar AS COMMANDBUTTON WITH ; TOP = 10, LEFT = 350, HEIGHT = 27, WIDTH = 112, ; CAPTION = "Mostrar mapa", NAME = "cmdMostrar" ADD OBJECT oleIE AS OLECONTROL WITH ; TOP = 48, LEFT = 12, HEIGHT = 300, WIDTH = 450, ; NAME = "oleIE", OLECLASS = "Shell.Explorer.2" PROCEDURE LOAD SYS(2333,1) THIS.SetPoint = SET("Point") SET POINT TO .

SET SAFETY OFF *-- Creo el cursor con los datos CREATE CURSOR MisLugares (Descri C(40), Lat N(12,6), Lon N(12,6), Zoom I(4)) INSERT INTO MisLugares VALUES ("Torre Eiffel (Francia)", 48.858333, 2.295000, 17) INSERT INTO MisLugares VALUES ("Baslica de San Pedro (Vaticano)", 41.902102, 12.456400, 17) INSERT INTO MisLugares VALUES ("Estatua de la Libertad (EEUU)", 40.689360, -74.044400, 17) INSERT INTO MisLugares VALUES ("Estadio Monumental (Argentina)", 34.545277, -58.449722, 17) INSERT INTO MisLugares VALUES ("Estadio Azteca (Mexico)", 19.302900, -99.150400, 17) INSERT INTO MisLugares VALUES ("Estadio Camp Nou (Espaa)", 41.380906, 2.123330, 17) INSERT INTO MisLugares VALUES ("Cementerio de aviones (EEUU)", 32.174247, -110.855874, 14) ENDPROC PROCEDURE DESTROY SET POINT TO (THIS.SetPoint) ENDPROC PROCEDURE cboDescrip.INIT THIS.LISTINDEX = 1 ENDPROC PROCEDURE cmdMostrar.CLICK TEXT TO lcHtml NOSHOW TEXTMERGE <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf8"/> <title>Google Maps</title> <script src="http://maps.google.com/maps?file=api&v=2&key=123" type="text/javascript"></script> <script type="text/javascript"> //<![CDATA[ function load() { if (GBrowserIsCompatible()) { var map = new GMap2(document.getElementById("map"),G_SATELLITE_MAP); map.addControl(new GLargeMapControl()); map.addControl(new GMapTypeControl()); map.addControl(new GOverviewMapControl()); map.setCenter(new GLatLng(<<ALLTRIM(STR(MisLugares.Lat,12,6))>>, <<ALLTRIM(STR(MisLugares.Lon,12,6))>>),<<TRANSFORM(MisLugares.Zoom)>>) ; map.setMapType(G_HYBRID_MAP); } } //]]> </script> </head> <body scroll="no" bgcolor="#CCCCCC" topmargin="0" leftmargin="0" onload="load()" onunload="GUnload()"> <div id="map" style="width:450px;height:300px"></div> </body> </html> ENDTEXT STRTOFILE(lcHtml,"MiHtml.htm") THISFORM.oleIE.Navigate2(FULLPATH("MiHtml.htm")) ENDPROC

ENDDEFINE

Los resultados de ejecutar el cdigo son los siguientes:

Google Maps posee muchsimas opciones que permiten aadir controles para el desplazamiento, etiquetas, marcadores, escalas, etc. Lo mejor para aprender a utilizarlo, es leer la documentacin disponible en el sitio Google Maps API, como as tambin leer y ajustarse a los Trminos de Uso. Hasta la prxima. Luis Mara

También podría gustarte