Hola invitado         02 Sep, 2010 - 04:44
Menú principal
 
Ads
 
Patrocinadores
 
Anuncios
 
© 2009 PortalFox
Google Maps en un formulario de VFP lecturas 10924
 Enviado por LuisMaria en Miércoles, 27 Septiembre, 2006
Formularios Como crear un formulario en Visual FoxPro, que nos muestre mapas e imágenes satelitales de Google Maps.

Google Maps en un formulario de VFP

Luis María Guayán Por Luis María Guayán, Tucumán, 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 código HTML y JavaScript. Esto ya lo publicó mi amigo Antonio Muñoz de Burgos y Caravaca en su artículo "Control del Explorador Web (HTML & JS & VFP)".

En este artículo, vamos a ver un ejemplo de como incorporar dinámicamente código HTML y JavaScript, que nos permita navegar por Google Maps y poder desplazarnos virtualmente a diversos lugares del mundo a bordo de nuestro velóz 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 página HTML que mostraremos en un control Explorador Web que incluiremos en nuestro formulario.

El código 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 ("Basílica 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 (España)", 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=utf-8"/>
    <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 código son los siguientes: 

Google Maps posee muchísimas opciones que permiten añadir controles para el desplazamiento, etiquetas, marcadores, escalas, etc. Lo mejor para aprender a utilizarlo, es leer la documentación disponible en el sitio Google Maps API, como así también leer y ajustarse a los Términos de Uso.

Hasta la próxima.

Luis María


 Versión imprimible  
Google Maps en un formulario de VFP | Entrar/Crear una cuenta | 14 Comentarios
Los comentarios son propiedad de sus respectivos autores.
No somos responsables de su contenido.

Re: Google Maps en un formulario de VFP


por amby en 27 Sep, 2006 - 09:22
(Información del usuario  | Enviar un mensaje http://www.amby.net)
Es muy interesante LuisMa,

¡¡ Gracias !!

Saludos,

Ana

Re: Google Maps en un formulario de VFP


por mtovar en 27 Sep, 2006 - 09:32
(Información del usuario  | Enviar un mensaje http://)
Impresionante....felicitaciones y muchas gracias

Manuel Tovar
Barranquilla - COLOMBIA

Re: Google Maps en un formulario de VFP


por TamayoK en 27 Sep, 2006 - 10:22
(Información del usuario  | Enviar un mensaje 
LuisMaria,

Muchísimas gracias por compartir ese preciso y claro código con la comunidad. Excelente exposición como de costumbre.

Kenneth Tamayo
San Juan, Puerto Rico

Re: Google Maps en un formulario de VFP


por cyrox en 27 Sep, 2006 - 12:54
(Información del usuario  | Enviar un mensaje http://)
Luis Maria!!!... no hay nada que decir!!... sos un loco.... ojala los locos como vos y otros que andan rondando por aca sigan compartiendo sus locuras!!!... jeje... desde la calurosa Asuncion-Py... Guille
p/d: Estoy haciendo mi tesis para la U con VFP+PGSQL... te puedo molestar con eso?... (se vino el mangueo!!!)

Re: Google Maps en un formulario de VFP


por mcano en 27 Sep, 2006 - 04:40
(Información del usuario  | Enviar un mensaje 
Excelente, Luis María. Gracias.

Re: Google Maps en un formulario de VFP


por fthul (raul_zagardua@yahoo.com) en 27 Sep, 2006 - 06:14
(Información del usuario  | Enviar un mensaje 
Impecable Luis María, muy claro como siempre
Saludos

Re: Google Maps en un formulario de VFP


por xpfoxitos (none@none.com) en 28 Sep, 2006 - 06:48
(Información del usuario  | Enviar un mensaje http://)
Esto -->"Estadio Camp Nou (España)"<--, me demuestra nuevamente el buen criterio que tienes...


Re: Google Maps en un formulario de VFP


por teseo en 14 Oct, 2006 - 01:11
(Información del usuario  | Enviar un mensaje http://)
En la version 6 de visualfoxpro que tengo que añadir para que no salga error a la hora de hacer clic en le boton.
PROCEDURE cmdMostrar.CLICK
TEXT TO lcHtml NOSHOW TEXTMERGE ---->linea que me bota error

  • Re: Google Maps en un formulario de VFP


    por LuisMaria (luismaria@portalfoxxx.com) en 15 Oct, 2006 - 09:07
    (Información del usuario | Enviar un mensajehttp://www.luismariaguayan.com.ar
    En la versión 6.0 el comando TEXT no tiene los parámetros de versiones posteriores. Busca otra forma de generar el archivo, como por ejemplo con SET TEXTMERGE ON, SET TEXTMERGE TO, Etc.


    [ No se permiten comentarios a los usuarios anónimos. Por favor, Inicia tu cuenta o registrate ]

    • Google Maps en un formulario de VFP


      por mossetto en 01 Ene, 2007 - 11:59
      (Información del usuario | Enviar un mensaje
      Hola Luis Maria

      Muy bueno tu trabajo, lamentablemente aun no tengo el Fox 7 y con el 6 no lo he podido hacer funcionar a codigo del Ejemplo, podrias ayudarme mostrando el codigo para que corra en 6.

      Muchas gracias por tu gentileza

      [ No se permiten comentarios a los usuarios anónimos. Por favor, Inicia tu cuenta o registrate ]

      • Re: Google Maps en un formulario de VFP


        por cvilla36 en 06 Ene, 2008 - 12:18
        (Información del usuario | Enviar un mensaje
        Bueno yo vi esto hace unos días y aquí pongo la modificación para VFP 6.0.
        Saludos.

        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, 20)
        INSERT INTO MisLugares VALUES ("Basílica de San Pedro (Vaticano)", 41.902102, 12.456400, 16)
        INSERT INTO MisLugares VALUES ("Estatua de la Libertad (EEUU)", 40.689360, -74.044400, 20)
        INSERT INTO MisLugares VALUES ("Estadio Monumental (Argentina)", -34.545277, -58.449722, 20)
        INSERT INTO MisLugares VALUES ("Estadio Azteca (Mexico)", 19.302900, -99.150400, 20)
        INSERT INTO MisLugares VALUES ("Estadio Camp Nou (España)", 41.380906, 2.123330, 20)
        INSERT INTO MisLugares VALUES ("Cementerio de aviones (EEUU)", 32.174247, -110.855874, 17)
        ENDPROC

        PROCEDURE DESTROY
        SET P
        Leer el resto de este comentario...

        [ No se permiten comentarios a los usuarios anónimos. Por favor, Inicia tu cuenta o registrate ]

    • Re: Google Maps en un formulario de VFP


      por cvilla36 en 22 Ene, 2008 - 03:01
      (Información del usuario | Enviar un mensaje
      No quedó como esperaba, pero pondré la parte que cambia, el resto es identico: PROCEDURE cmdMostrar.CLICK SET TALK OFF SET TEXTMERGE ON NOSHOW SET TEXTMERGE TO lcHtml.txt STORE _TEXT TO gclcHtml TEXT //
      ENDTEXT FCLOSE(gclcHtml) cnControladorArch = FOPEN("lcHtml.txt") lnTamaño = FSEEK(cnControladorArch, 0, 2) IF lnTamaño <= 0 WAIT WINDOW "Este archivo está vacío." NOWAIT ELSE = FSEEK(cnControladorArch, 0, 0) lcCadena = FREAD(cnControladorArch, lnTamaño) STRTOFILE(lcCadena,"MiHtml.htm") = FCLOSE(cnControladorArch) THISFORM.oleIE.Navigate2(FULLPATH("MiHtml.htm")) ENDIF ENDPROC ENDDEFINE

      [ No se permiten comentarios a los usuarios anónimos. Por favor, Inicia tu cuenta o registrate ]

  • Re: Google Maps en un formulario de VFP


    por cvilla36 en 22 Ene, 2008 - 03:02
    (Información del usuario | Enviar un mensaje
    A ver si ya queda:

    PROCEDURE cmdMostrar.CLICK
    SET TALK OFF
    SET TEXTMERGE ON NOSHOW
    SET TEXTMERGE TO lcHtml.txt
    STORE _TEXT TO gclcHtml
    TEXT





    //
    onload="load()" onunload="GUnload()">


    ENDTEXT
    FCLOSE(gclcHtml)
    cnControladorArch = FOPEN("lcHtml.txt")
    lnTamaño = FSEEK(cnControladorArch, 0, 2)
    IF lnTamaño <= 0
    WAIT WINDOW "Este archivo está vacío." NOWAIT
    ELSE
    = FSEEK(cnControladorArch, 0, 0)
    lcCadena = FREAD(cnControladorArch, lnTamaño)
    STRTOFILE(lcCadena,"MiHtml.htm")
    = FCLOSE(cnControladorArch)
    THISFORM.oleIE.Navigate2(FULLPATH("MiHtml.htm"))
    ENDIF
    ENDPROC
    ENDDEFINE

    [ No se permiten comentarios a los usuarios anónimos. Por favor, Inicia tu cuenta o registrate ]

Re: Google Maps en un formulario de VFP


por jhernancanom (jhernancanom@hotmail.com) en 30 Mar, 2009 - 09:05
(Información del usuario  | Enviar un mensaje 
Buenas tardes, Luis.

Te hago esta consulta sobre Google Maps. No sobre VFP6, pues ya debimos pasar por eso, para llegar a este punto.

Lo que pasa es que no me funciona el programa: no aparece la imagen de Google Maps, no se muestra ningún tipo de error, ni advertencia ni mensaje ni nada.

Ni siquiera ejecutando el html generado directamente desde el navegador de Internet.

¿Me puedes dar alguna luz? ¿o alguien?

Gracias.

Hernán Cano
Asesor de Sistemas Programador
Medellín, Antioquia, Colombia




Todas las marcas y los logos utilizados en este sitio son propiedad de sus respectivos dueños.
Los artículos, noticias y comentarios son propiedad y responsabilidad de sus respectivos autores.
Copyright © 2000-2010 PortalFox. Todos los derechos reservados.