google maps.

669 views
Skip to first unread message

Saúl Piña

unread,
May 26, 2014, 1:22:35 PM5/26/14
to publice...@googlegroups.com
Saludos, estoy implementando el prg que me envío Jose A. Blasco, solo me quedan un par de dudas:

1. Como puedo cambiar que se muestre de "Satelite" a "mapa" al visualizar una localización.?


2. Como podría obtener el valor de var y copiarlo a un textbox o a una variable de vfp?

el prg que me envío es el que está adjunto.



gmaps.zip

Saúl Piña

unread,
May 26, 2014, 1:24:41 PM5/26/14
to publice...@googlegroups.com
Se me pasó postear el codigo del prg:


Parameters miaddress, miname_id
*
Public oMiForm
oMiForm = Createobject("MiForm")
oMiForm.Show
Return

Define Class MiForm As Form
    Height = SYSMETRIC(22)-120        && 560
    Width = SYSMETRIC(21)-100            && 625
    AutoCenter = .T.
    Name = "MiForm"
    SetPoint = ""
    SetDecimals = 2
    ShowWindow = 1
    WindowType = 1
    TitleBar = 0
    BorderStyle = 2
    BackColor = RGB(169,176,194)    &&Rgb(88,99,124)

    Add Object Descrip As TextBox With ;
        HEIGHT = 24, Left = 12, Top = 12, Width = 330, MaxLength = 100, ;
        ForeColor = Rgb(88,99,124), BackColor = Rgb(255,255,255), ;
        SelectedForeColor = Rgb(255,255,255), SelectedBackColor = Rgb(88,99,124), ;
        STYLE = 0, Name = "Descrip", SelectOnEntry = .T., Enabled = .T.

    Add Object cmdMostrar As CommandButton With ;
        TOP = 10, Left = 344, Height = 27, Width = 90, ;
        CAPTION = "\<Mostrar mapa", Name = "cmdMostrar"

    ADD OBJECT combo1 AS combobox WITH ;
        BoundColumn = 1, ;
        ColumnCount = 1, ;
        RowSourceType = 0, ;
        RowSource = "", ;
        Height = 24, ;
        ColumnLines = .F., ;
        Left = 500, ;
        Top = 12, ;
        Width = 72, ;
        BoundTo = .F., ;
        Name = "Combo1"

    Add Object cmdPrint As CommandButton With ;
        TOP = 10, Left = 436, Height = 27, Width = 60, ;
        CAPTION = "\<Imprimir", Name = "cmdPrint"

    Add Object cmdCerrar As CommandButton With ;
        TOP = 10, Left = 577, Height = 27, Width = 36, ;
        CAPTION = "\<Salir", Name = "cmdCerrar"

    Add Object oleIE As OleControl With ;
        TOP = 48, Left = 12, Height = Thisform.Height-(25+36), Width = Thisform.Width-25, ;
        NAME = "oleIE", OleClass = "Shell.Explorer.2"

    Procedure Load
        Sys(2333,1)
        This.SetPoint = Set("Point")
        This.SetDecimals = Set("Decimals")
        Set Point To .
        Set Decimals To 8
        Set Safety Off
        Declare Integer ReleaseCapture In WIN32API
        Declare Integer SendMessage In WIN32API Integer, Integer, Integer, Integer
        Declare Integer GetFocus In WIN32API
        *
        Use paises In 0 Alias paises Shared Again
        Select Proper(pais) as pais,siglas from paises Into Cursor pais
        Select pais
        Goto top
        Use In (Select('paises'))
        *
    Endproc

    Procedure Init
        thisform.combo1.RowSourceType= 2
        thisform.combo1.RowSource='pais'
        thisform.combo1.ControlSource='pais.siglas'
        thisform.combo1.BoundColumn=2
        thisform.combo1.BoundTo= .T.
   
        If Type('miaddress')<>'C'
            This.Descrip.Value=''
        Else
            This.Descrip.Value=miaddress
            Thisform.cmdMostrar.Click()
        Endif
        If Type('miname_id')<>'C'
            miname_id=''
        Else
            miname_id = UPPER(miname_id)
        Endif
    Endproc

    Procedure MouseDown
        Lparameters nButton, nShift, nXCoord, nYCoord
        Local lnHandle
        If nButton = 1
            ReleaseCapture()
            SendMessage(This.HWnd, 0x112, 0xF012,0)
        Endif
    Endproc

    Procedure cmdCerrar.Click
        thisform.combo1.clear()
        thisform.RemoveObject('combo1')
        *       
        Use In pais
        *
        Set Point To (Thisform.SetPoint)
        Set Decimals To (Thisform.SetDecimals)
        Thisform.Release
    Endproc

    Procedure cmdPrint.Click
        Thisform.PrintWindow(GetFocus(), "Imprimiendo ...")
    Endproc

    Procedure PrintWindow
        Lparameters tnHWnd, tcJobName
        *
        Local lcJobName        && Nombre de la tarea de impresion
        Local lnRetVal        && Valor de retorno de las funciones del API

        Declare Integer PrintWindow In DibApi32 ;
            INTEGER HWnd, ;
            INTEGER fPrintArea, ;
            INTEGER fPrintOpt, ;
            INTEGER wxScale, ;
            INTEGER wyScale, ;
            STRING @ szJobName

        *!* PW_WINDOW para imprimir la ventana entera
        *!* PW_CLIENT para imprimir el area cliente
        *!* Como ajustar la imagen
        *!* PW_BESTFIT se ajusta al papel pero se mantienen las proporciones
        *!* PW_STRETCHTOPAGE se ajusta para cubrir totalmente el papel pero distorsiona las proporciones
        *!* PR_SCALE escala el tamaño de impresion

        #Define PW_WINDOW 1
        #Define PW_CLIENT 2
        #Define PW_BESTFIT 1
        #Define PW_STRETCHTOPAGE 2
        #Define PW_SCALE 3

        lcJobName = tcJobName + Chr(0)
        lnRetVal = PrintWindow( tnHWnd, PW_CLIENT, PW_BESTFIT, 0, 0, @lcJobName)
        If lnRetVal != 0
            If lnRetVal != 6    && 6 = El usuario cancelo la impresión
                = Messagebox("Imposible Imprimir la ventana" + CRLF + ;
                    "PrintWindow API retorno " + Str(lnRetVal), ;
                    MB_ICONEXCLAMATION + MB_OK, ;
                    "ERROR")
            Endif
        Endif
    Endproc

    Procedure cmdMostrar.Click
        If Empty(Alltrim(Thisform.Descrip.Value))
            Thisform.Descrip.SetFocus()
            Return
        Else
            minameid=''
            If !Empty(miname_id)
                minameid=STRTRAN(ALLTRIM(miname_id),'ñ','&ntilde;',1,10,1)
                miname_id=''
            endif
            busdir=Alltrim(Thisform.Descrip.Value)
            busdir=busdir+', '+thisform.combo1.value
            *----------------
            * Construir web
            *----------------
            TEXT TO lcHtml NOSHOW TEXTMERGE
            <!DOCTYPE html>
            <html>

              <head>
                <title>Busqueda en Google Maps</title>
                <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&libraries=places"></script>

                <script>

                  var map = null
                  var geocoder = null
                  var address = "<<Strtran(ALLTRIM(ThisForm.Descrip.Value),'ñ','n',1,10,1)>>"

                  function initialize() {
                    geocoder = new google.maps.Geocoder();
                    var myOptions = {
                      zoom: 18,
                      mapTypeId: google.maps.MapTypeId.HYBRID
                    }
                    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
                    geocoder.geocode( { 'address': address}, function(results, status) {
                      if (status == google.maps.GeocoderStatus.OK) {
                        map.setCenter(results[0].geometry.location);
                        var marker = new google.maps.Marker({
                            map: map,
                            position: results[0].geometry.location
                        });
                        var coord1 = results[0].geometry.location    **  << -------Aquí es la variable que deseo obtener
                        var coord2 = ''
                        var infoWin = new google.maps.InfoWindow({
                          content: '<<minameid>>' + '<br>' + results[0].formatted_address + '<br>' + '<br>' + 'Coord. ' + coord1   
                        });
                        infoWin.open(map, marker);

                      } else {
                        alert("Se ha producido un fallo por: " + status);
                      }
                        });
                      }

                </script>
              </head>

              <body onload="initialize()">
                <div id="map_canvas" style="width: <<Thisform.oleIE.width-32>>px; height: <<Thisform.oleIE.height-34>>px;"></div>
              </body>
            </html>
            ENDTEXT
            *----------------------
            * Convertir en archivo
            *----------------------
            Strtofile(lcHtml,"MiHtml.htm")
            Thisform.oleIE.Navigate2(Fullpath("MiHtml.htm"))
            *
        Endif
    Endproc

Enddefine

Jose Antonio Blasco

unread,
May 26, 2014, 1:26:41 PM5/26/14
to Comunidad de Visual Foxpro en Español
Saúl, para ver como "mapa", cambia la palabra "HIBRYD" por "NORMAL"

Para lo otro, creo que quitando "var" la variable "coord1" se convierte en publica.

Un saludo.

Jose A. Blasco
Zaragoza - España
Visual FoxPro 9 SP2

"No hay camino hacia la libertad, la libertad es el camino" - Indira Gandhi
“Nunca te olvides de sonreír, porque el día que no sonrías  será un día perdido”  -  Charles Chaplin
“Todo el mundo quiere tener un amigo, pero pocos se toman la molestia de ser uno”
- Anónimo

Luis Maria Guayan

unread,
May 26, 2014, 1:34:16 PM5/26/14
to publice...@googlegroups.com
Deberias mirar la ayuda de la API de GoogleMaps.

La propiedad que debes cambiar es MapTypeId y los valores son:

  • HYBRID    This map type displays a transparent layer of major streets on satellite images.
  • ROADMAP    This map type displays a normal street map.
  • SATELLITE    This map type displays satellite images.
  • TERRAIN    This map type displays maps with physical features such as terrain and vegetation.

https://developers.google.com/maps/documentation/javascript/3.exp/reference?hl=es#MapTypeId

Luis María Guayán
Tucumán, Argentina
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________

Saúl Piña

unread,
May 27, 2014, 9:53:37 AM5/27/14
to publice...@googlegroups.com
Ya lo intenté y me marca error, lo que deseo es obtener las coordenadas que están en la variable de java "var" pero no logro guardarlo en una variable de vfp. Esta variable coord1 lo quiero guardar en una tabla con los listados de ciudadanos para lograr su ubicacion.

Alguna sugerencia?

gracias.

Jose Antonio Blasco

unread,
May 27, 2014, 1:11:41 PM5/27/14
to Comunidad de Visual Foxpro en Español
Creo que esto se hace grabando un archivo mediante PHP pero nunca lo he intentado.

Si lo consigo te aviso.

Un saludo.

Jose A. Blasco
Zaragoza - España
Visual FoxPro 9 SP2

"No hay camino hacia la libertad, la libertad es el camino" - Indira Gandhi
“Nunca te olvides de sonreír, porque el día que no sonrías  será un día perdido”  -  Charles Chaplin
“Todo el mundo quiere tener un amigo, pero pocos se toman la molestia de ser uno”
- Anónimo


Saúl Piña

unread,
May 27, 2014, 1:42:00 PM5/27/14
to publice...@googlegroups.com
Oks. porque justamente es lo que necesito, obtener los numeros de coordenada que arroja al buscar una localizacion.

gracias, yo seguiré intentando para ver si logro obtenerlo. gracias

Douglas Sánchez

unread,
May 27, 2014, 3:12:44 PM5/27/14
to publice...@googlegroups.com
Hola que tal, Con ese ejemplo que subieron lo podes hacer guarda el html ya con las coordenadas guardadas y no es un archivo grande y luego solo lo mostrar y si hay cambios en el mapa se actualiza cuando lo mandas a cargar, me parece que seria una forma facil de hacerlo

Saludes

Douglas

Saúl Piña

unread,
May 27, 2014, 4:18:33 PM5/27/14
to publice...@googlegroups.com
Si, pero me gustaria guardar las coordenadas en un campo de la tabla.

Hugo C.

unread,
May 27, 2014, 8:06:22 PM5/27/14
to publice...@googlegroups.com
Inteneta cambiado el  Procedure cmdMostrar.Click por este,

Procedure cmdMostrar.Click
If Empty(Alltrim(Thisform.Descrip.Value))
Thisform.Descrip.SetFocus()
Return
ELSE
   DELETE FILE cordenadas.txt
       var coord1 = results[0].geometry.location;
       var coord2 = '';
       
var myObject, newfile;
         myObject = new ActiveXObject("Scripting.FileSystemObject");
         newfile = myObject.CreateTextFile("cordenadas.txt", true);         
newfile.WriteLine(coord1);
       
       document.getElementById('cor').value = coord1;
var infoWin = new google.maps.InfoWindow({
 content: '<<minameid>>' + '<br>' + results[0].formatted_address + '<br>' + '<br>' + 'Coord. ' + coord1
});
infoWin.open(map, marker);

     } else {
       alert("Se ha producido un fallo por: " + status);
     }
   });
 }

   </script>
 </head>

 <body onload="initialize()">
   <INPUT name="cor" id="cor" value/>
   <div id="map_canvas" style="width: <<Thisform.oleIE.width-32>>px; height: <<Thisform.oleIE.height-34>>px;"></div>
 </body>
</html>
ENDTEXT
*----------------------
* Convertir en archivo
*----------------------
Strtofile(lcHtml,"MiHtml.htm")
Thisform.oleIE.Navigate2(Fullpath("MiHtml.htm"))
**********************************
* esperar a que se cree el archivo
*********************************
FOR x = 1 TO 10000
  IF FILE("cordenadas.txt")
      EXIT
   ENDIF   
ENDFOR
**********************************
* Aqui ya tenemos las cordenadas
*********************************
m.codenadas = FILETOSTR("cordenadas.txt")
MESSAGEBOX(m.codenadas)
Endif
Endproc

 Saludos.

Hugo C.

unread,
May 27, 2014, 8:09:56 PM5/27/14
to publice...@googlegroups.com

Saúl Piña

unread,
May 27, 2014, 8:33:41 PM5/27/14
to publice...@googlegroups.com
Saludos amigo Hugo, te envío el error que me envía:




El martes, 27 de mayo de 2014 19:09:56 UTC-5, Hugo C. escribió:

Hugo C.

unread,
May 27, 2014, 10:42:40 PM5/27/14
to publice...@googlegroups.com
Estas son las lineas de javascript que deben de crear el archivo  con las coordenadas

var myObject, newfile;
myObject = new ActiveXObject("Scripting.FileSystemObject");
newfile = myObject.CreateTextFile("cordenadas.txt", true);            
newfile.WriteLine(coord1);
        
Que sistema operativo usas y en que directorio estas ?
No te marca algún otro error ?

Adjunto imagen "Sin Titulo.png".

Saludso.
Sin título.png

Jose Antonio Blasco

unread,
May 28, 2014, 4:05:27 AM5/28/14
to Comunidad de Visual Foxpro en Español
Solo es cuestion de tiempo.
Yo he tenido que aumentar el bucle que comprueba la existencia de "coordenadas.txt" hasta 30000

Tambien me pide confirmación para ejecutar el ActiveX.

Un saludo.

Jose A. Blasco
Zaragoza - España
Visual FoxPro 9 SP2

"No hay camino hacia la libertad, la libertad es el camino" - Indira Gandhi
“Nunca te olvides de sonreír, porque el día que no sonrías  será un día perdido”  -  Charles Chaplin
“Todo el mundo quiere tener un amigo, pero pocos se toman la molestia de ser uno”
- Anónimo


Saúl Piña

unread,
May 28, 2014, 11:08:05 AM5/28/14
to publice...@googlegroups.com
Gracias hugo, lo voy a revisar y te cuento, aunque al ver la imagen pues debe de funcionar. 

saludos

Saúl Piña

unread,
May 28, 2014, 1:00:48 PM5/28/14
to publice...@googlegroups.com
El sistema operativo que tengo es Windows 7 64Bits,  utilizo el directorio de la carpeta "descargas"

y el problema sigue y sigue, me aparece el mismo error.

te envío de nuevo el codigo:


                      mapTypeId: google.maps.MapTypeId.ROADMAP

                    }
                    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
                    geocoder.geocode( { 'address': address}, function(results, status) {
                      if (status == google.maps.GeocoderStatus.OK) {
                        map.setCenter(results[0].geometry.location);
                        var marker = new google.maps.Marker({
                            map: map,
                            position: results[0].geometry.location
                        });
                        coord1 = results[0].geometry.location   && Este es la variable que deseo obtener su valor

                        var coord2 = ''
                   
                    var myObject, newfile;
                    myObject = new ActiveXObject("Scripting.FileSystemObject");
                    newfile = myObject.CreateTextFile("cordenadas.txt", true);                 
                    newfile.WriteLine(coord1);
                   

Jose Antonio Blasco

unread,
May 28, 2014, 1:18:44 PM5/28/14
to Comunidad de Visual Foxpro en Español
Saúl, el "FOR..NEXT" que hay hasta 10000, para dejar tiempo a que grabe el archivo, auméntalo hasta 30000.

Un saludo.

Jose A. Blasco
Zaragoza - España
Visual FoxPro 9 SP2

"No hay camino hacia la libertad, la libertad es el camino" - Indira Gandhi
“Nunca te olvides de sonreír, porque el día que no sonrías  será un día perdido”  -  Charles Chaplin
“Todo el mundo quiere tener un amigo, pero pocos se toman la molestia de ser uno”
- Anónimo


Saúl Piña

unread,
May 28, 2014, 1:27:32 PM5/28/14
to publice...@googlegroups.com
ok, lo pruebo y te cuento, thanks

Hugo C.

unread,
May 28, 2014, 1:41:20 PM5/28/14
to publice...@googlegroups.com
Te envío de nuevo el código por que veo que te esta marcando otro error,
intenta ejecutado VFP como administrador.

     mapTypeId: google.maps.MapTypeId.HYBRID
   }
   map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
   geocoder.geocode( { 'address': address}, function(results, status) {
     if (status == google.maps.GeocoderStatus.OK) {
       map.setCenter(results[0].geometry.location);
       var marker = new google.maps.Marker({
           map: map,
           position: results[0].geometry.location
       });
       var coord1 = results[0].geometry.location;
       var coord2 = '';
       
var myObject, newfile;
         myObject = new ActiveXObject("Scripting.FileSystemObject");
         newfile = myObject.CreateTextFile("cordenadas.txt", true);         
newfile.WriteLine(coord1);
       
       document.getElementById('cor').value = coord1;
var infoWin = new google.maps.InfoWindow({
 content: '<<minameid>>' + '<br>' + results[0].formatted_address + '<br>' + '<br>' + 'Coord. ' + coord1
});
infoWin.open(map, marker);

     } else {
       alert("Se ha producido un fallo por: " + status);
     }
   });
 }

   </script>
 </head>

 <body onload="initialize()">
   <INPUT name="cor" id="cor" value/>
   <div id="map_canvas" style="width: <<Thisform.oleIE.width-32>>px; height: <<Thisform.oleIE.height-34>>px;"></div>
 </body>
</html>
ENDTEXT
*----------------------
* Convertir en archivo
*----------------------
Strtofile(lcHtml,"MiHtml.htm")
Thisform.oleIE.Navigate2(Fullpath("MiHtml.htm"))
**********************************
* esperar a que se cree el archivo
*********************************
FOR x = 1 TO 30000
  IF FILE("cordenadas.txt")
      EXIT
   ENDIF   
ENDFOR
**********************************
* Aqui ya tenemos las cordenadas
*********************************
m.codenadas = FILETOSTR("cordenadas.txt")
MESSAGEBOX(m.codenadas)
Endif
Endproc

Saludos.

Saúl Piña

unread,
May 28, 2014, 2:19:27 PM5/28/14
to publice...@googlegroups.com

Bueno, ya casi me queda listo.  Veo que despues de dar clic en este mensaje de windows se crea "coordenadas.txt" y Mihtml.htm . Pero antes de dar clic en el mensaje de Activex de windows se ejecuta el codigo donde debe guardar y mostrar el messagebox, por lo mismo se muestra un error. 

ahi va la imagen de mensaje de windows y una imagen mas despues de dar clic, como se crea los archivos .txt. 

Saúl Piña

unread,
May 28, 2014, 2:21:54 PM5/28/14
to publice...@googlegroups.com


Hugo C.

unread,
May 28, 2014, 4:36:29 PM5/28/14
to publice...@googlegroups.com
ojo con los errores de dedo ;--),
cordenadas.txt no es igual a coordenadas.txt  
ni m.codenadas es igual a m.coordenadas .

Saludos.

Saúl Piña

unread,
May 29, 2014, 12:18:12 PM5/29/14
to publice...@googlegroups.com
Saludos de nuevo, pues les dejo el formulario para localizar direcciones en Google Maps. Este es el resultado de los cambios que realicé.

Sería muy interesante el poder MOVER el indicador o punto de localizacion (globo rojo) para ubicar con más exactitud.




Definitivamente se trabajará en RED local. (18 equipos consultando simultáneamente)

Hugo C.

unread,
May 29, 2014, 12:36:15 PM5/29/14
to publice...@googlegroups.com
Que bien, Como lograste quitar el mensaje de seguridad de Windows ?

Saludos.

Saúl Piña

unread,
May 29, 2014, 12:47:53 PM5/29/14
to publice...@googlegroups.com
tuve que crear un nuevo boton y una vez que se muestra el mapa, le doy clic en el boton "obtener coordenadas" 

como te digo, sería muy bueno que se pueda mover el globito de localizacion desde el mapa....ojalá y se pueda.

Douglas Sánchez

unread,
May 29, 2014, 3:42:30 PM5/29/14
to publice...@googlegroups.com
Hola Saúl, como hiciste para obtener las coordenadas en el messagegox(), nos regalas el truco?

Saludes y gracias por compartirlo.

Douglas
--
Ing. Douglas Sánchez Guillén
      Consultor Informatico
Claro: 505 88495476

Jhonny Zambrana

unread,
May 29, 2014, 6:04:37 PM5/29/14
to publice...@googlegroups.com
Jajajaja, les dejo el formulario no es igual a les dejo una imagen del formulario. ya casi es viernes. :)

Saúl Piña

unread,
May 29, 2014, 7:45:08 PM5/29/14
to publice...@googlegroups.com
ja,ja,ja. es correcto. Las imagenes de la pantalla.

Jose Antonio Blasco

unread,
May 30, 2014, 11:46:08 AM5/30/14
to Comunidad de Visual Foxpro en Español
Saúl, tambien a mi me interesaria saber como has evitado el mensaje de seguridad del ActiveX

Gracias.

Jose A. Blasco
Zaragoza - España
Visual FoxPro 9 SP2

"No hay camino hacia la libertad, la libertad es el camino" - Indira Gandhi
“Nunca te olvides de sonreír, porque el día que no sonrías  será un día perdido”  -  Charles Chaplin
“Todo el mundo quiere tener un amigo, pero pocos se toman la molestia de ser uno”
- Anónimo


Saúl Piña

unread,
May 30, 2014, 2:50:24 PM5/30/14
to publice...@googlegroups.com
Saludos, en la imagen está la respuesta, lo unico que hice fue agregar un boton y una vez que ubica la direccion el usuario puede oprimir el boton, aunque yo lo voy a cambiar para el boton cerrar, para por fin obtener las coordenadas y guardarlas en la tabla .dbf

Saludos, 


Por cierto, para qué me funcionaría la variable o parameter miname_id ??


Gracias Jose A Blasco....

Hugo C.

unread,
May 30, 2014, 5:23:12 PM5/30/14
to publice...@googlegroups.com
DSANCHEZ te solicito que compartieras el truco, 
¿ por que no compartes el código ?

Saludos.

sixtored

unread,
May 30, 2014, 5:57:04 PM5/30/14
to publice...@googlegroups.com
Aca publico un pequeño codigo espero les sea util
el cual lo tengo en form.. para esta funcion.. tambien se puede mover el globo para reposicionar y obtener la nueva georeferencia.-

lclat =0
lclng=0
domic = RTRIM(Thisform.doMICILIO1.Value)
lcprov = RTRIM(Abonados.provincia)
lclocal = RTRIM(Abonados.localidad)
lccalle = RTRIM(Abonados.calle)
lcnume = RTRIM(Abonados.numero)
************************************************************************
***********************************************************************
TEXT TO lcHtml NOSHOW TEXTMERGE
<!DOCTYPE html>
<html>
  <head>
   <title>Busqueda en Google Maps</title>
<script type="text/javascript" src="https://maps.google.com.ar/maps/api/js?sensor=false"> </script> 
<script type="text/javascript" charset="utf-8">
var map = null;
var marker = null;
var geocoder = null;
var infowindow = null;
// posicion predeterminada
var ini_lat = <<lclat>>
var ini_lng = <<lclng>>
var a_geocode_status = new Array('ERROR', 'INVALID_REQUEST', 'OK', 'OVER_QUERY_LIMIT', 'REQUEST_DENIED', 'UNKNOWN_ERROR', 'ZERO_RESULTS');
a_geocode_status[a_geocode_status[0]] = ['Se ha producido un error al establecer la comunicación con los servidores de Google.'];
a_geocode_status[a_geocode_status[1]] = ['La solicitud GeocoderRequest no es válida.'];
a_geocode_status[a_geocode_status[2]] = ['Indica que la respuesta contiene un valor GeocoderResponse válido.'];
a_geocode_status[a_geocode_status[3]] = ['La página web ha superado el límite de solicitudes en un período de tiempo demasiado breve.'];
a_geocode_status[a_geocode_status[4]] = ['No se permite que la página web utilice el geocoder.'];
a_geocode_status[a_geocode_status[5]] = ['No se pudo procesar una solicitud de codificación geográfica debido a un error del servidor. Puede que la solicitud se realice correctamente si lo intentas de nuevo.'];
a_geocode_status[a_geocode_status[6]] = ['No se ha encontrado ningún resultado para esta solicitud GeocoderRequest.'];
// funciones para nuestro mapa
function initGMaps() {
   map = new google.maps.Map(document.getElementById("map_canvas"), {
       'zoom': 15
       , 'center': new google.maps.LatLng(ini_lat, ini_lng)
       , 'mapTypeId': google.maps.MapTypeId.HYBRID
       , 'scaleControl': true
       , 'scrollwheel': false
       , 'streetViewControl': false
, 'mapTypeControl': false
       , 'region': 'ar'
   });
   marker = new google.maps.Marker({
       map: map
       , position: new google.maps.LatLng(ini_lat, ini_lng)
       , draggable: true
       , visible: true
   });
   geocoder = new google.maps.Geocoder();
   google.maps.event.addListener(marker, "dragend", function() {
       showLatLongPos();
   });
   google.maps.event.addListener(marker, "click", function() {
       showLatLongPos();
   });

}

function showAddress() {
   var calle = "<<lccalle>>";
   var numero = "<<lcnume>>";
   var localidad = "<<lclocal>>";
   var provincia = "<<lcprov>>";
  var address = calle + " " + numero + ", " + localidad + ", " + provincia ; 
     if (geocoder) {
          geocoder.geocode({'address': address, 'region': 'AR'} , function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
  if (results[0]) {
var input = results[0].geometry.location.toUrlValue();
var latlngStr = input.split(",", 2);
var lat_ar = parseFloat(latlngStr[0]);
var lng_ar = parseFloat(latlngStr[1]);
var latLong_ar = new google.maps.LatLng(lat_ar, lng_ar);

map.setZoom(15);
map.setCenter(latLong_ar);
marker.setPosition(latLong_ar);
marker.setVisible(true);

google.maps.event.trigger(marker, 'click');

      var location_type_ar = results[0].geometry.location_type
infowindow.open(map, marker);
  } else {
alert(a_geocode_status[status]);
  }
} else {
alert(a_geocode_status[status]);
}
          });
          } 
    }            
function showLatLongPos(){
   var location = marker.getPosition().toUrlValue(7);
   var latlngStr = location.split(",", 2);
   var lat_ar = parseFloat(latlngStr[0]);
   var lng_ar = parseFloat(latlngStr[1]);
                   
   document.getElementById("latitud").innerHTML = lat_ar;
   document.getElementById("longitud").innerHTML = lng_ar;
}

google.maps.event.addDomListener(window, 'load', initGMaps);
   </script>
   </head>
  <body>
  <div id="map_canvas" style="width: <<Thisform.oleIE.width-32>>px; height: <<Thisform.oleIE.height-34>>px;"></div>
  <div id="latitud"></div>
  <div id="longitud"></div>
  </body>
</html>
ENDTEXT
*----------------------
* Convertir en archivo
*----------------------
Strtofile(lcHtml,"MiHtml.htm")
Thisform.oleIE.Navigate2(Fullpath("MiHtml.htm"))

******************************************************
Luego en el evento click de un boton 
escribir el siguiente codigo para obtener las nuevas corrdenadas.-
LOCAL lclat, lclng
lclat=thisform.OleIE.document.getElementById("latitud").innerHTML
lclng=thisform.OleIE.document.getElementById("longitud").innerHTML

Atte.-
Sixto Diaz

Rh Yac

unread,
May 30, 2014, 7:16:55 PM5/30/14
to publice...@googlegroups.com
seria mucho pedir que subieras el form en rar ?

________________________________
Rene Yacyna
Córdoba - Argentina.
03546 15415637

Jose Antonio Blasco

unread,
May 30, 2014, 7:50:40 PM5/30/14
to Comunidad de Visual Foxpro en Español

Para poder pasar al procedimiento un nombre que asociar a la  dirección, por ejemplo de un campo de un fichero.  En un mantenimiento "de clientes" pones un botón de llamada a este prg pasando el nombre del cliente y su dirección.

Saludos

Saúl Piña

unread,
May 30, 2014, 10:11:09 PM5/30/14
to publice...@googlegroups.com
Aun no he podido evitar el mensaje de windows. Haber si despues lo puedo lograr. Saludos.

Douglas Sánchez

unread,
Jun 1, 2014, 12:49:52 PM6/1/14
to publice...@googlegroups.com
Hola Saul a que mensajes de windows te refieres, a mi no me sale nada y veo bien todo el ejemplo.

slds

Douglas


El 30 de mayo de 2014, 20:11, Saúl Piña <saulpi...@gmail.com> escribió:
Aun no he podido evitar el mensaje de windows. Haber si despues lo puedo lograr. Saludos.



Saúl Piña

unread,
Jun 2, 2014, 12:43:19 PM6/2/14
to publice...@googlegroups.com

Jose Antonio Blasco

unread,
Jun 2, 2014, 1:06:26 PM6/2/14
to Comunidad de Visual Foxpro en Español
Sí, a mi también me sale el mismo mensaje, lo provoca las lineas:

var myObject, newfile;
myObject = new ActiveXObject("Scripting.FileSystemObject");
newfile = myObject.CreateTextFile("coordenadas.txt", true);         
newfile.WriteLine(coord1+','+coord2);


un saludo

Jose A. Blasco
Zaragoza - España
Visual FoxPro 9 SP2

"No hay camino hacia la libertad, la libertad es el camino" - Indira Gandhi
“Nunca te olvides de sonreír, porque el día que no sonrías  será un día perdido”  -  Charles Chaplin
“Todo el mundo quiere tener un amigo, pero pocos se toman la molestia de ser uno”
- Anónimo


Jose Antonio Blasco

unread,
Jun 2, 2014, 1:07:02 PM6/2/14
to Comunidad de Visual Foxpro en Español
Aclaro, trabajo sobre Wxp.



Jose A. Blasco
Zaragoza - España
Visual FoxPro 9 SP2

"No hay camino hacia la libertad, la libertad es el camino" - Indira Gandhi
“Nunca te olvides de sonreír, porque el día que no sonrías  será un día perdido”  -  Charles Chaplin
“Todo el mundo quiere tener un amigo, pero pocos se toman la molestia de ser uno”
- Anónimo


Saúl Piña

unread,
Jun 2, 2014, 2:07:27 PM6/2/14
to publice...@googlegroups.com
Amigo José A. Blasco, 

A qué hace referencia la variable miname_id ?? 

minameid=''
If !Empty(miname_id)
minameid=STRTRAN(ALLTRIM(miname_id),'ñ','&ntilde;',1,10,1)
miname_id=''



gracias....

Hugo C.

unread,
Jun 2, 2014, 3:37:39 PM6/2/14
to publice...@googlegroups.com
cambien Procedure cmdMostrar.Click por este, ya no debe de salir el
error del active X,
Procedure cmdMostrar.Click
If Empty(Alltrim(Thisform.Descrip.Value))
Thisform.Descrip.SetFocus()
Return
ELSE
  
       document.getElementById('txtCordenadas').value = coord1;
var infoWin = new google.maps.InfoWindow({
 content: '<<minameid>>' + '<br>' + results[0].formatted_address + '<br>' + '<br>' + 'Coord. ' + coord1
});
infoWin.open(map, marker);

     } else {
       alert("Se ha producido un fallo por: " + status);
     }
   });
 }

   </script>
 </head>

 <body onload="initialize()">
   <INPUT name="txtCordenadas" id="cor" value TYPE="hidden"/>
   <div id="map_canvas" style="width: <<Thisform.oleIE.width-32>>px; height: <<Thisform.oleIE.height-34>>px;"></div>
 </body>
</html>
ENDTEXT
*----------------------
* Convertir en archivo
*----------------------
Strtofile(lcHtml,"MiHtml.htm")
Thisform.oleIE.Navigate2(Fullpath("MiHtml.htm"))
**********************************
* Aqui Esperamos las cordenadas
**********************************
LOCAL lcCordenadas, llErrores
DO WHILE THISFORM.oleIE.Busy()
    DOEVENTS 
ENDDO
llErrores = .F.
DO WHILE .T.
  TRY
  lcCordenadas =Thisform.oleIE.document.getElementById('txtCordenadas').value
  llErrores = .F.
   CATCH
   llErrores = .T.
     ENDTRY
      IF llErrores == .F. AND NOT EMPTY(lcCordenadas)
  EXIT
       ENDIF
ENDDO
MESSAGEBOX(lcCordenadas)
Endif
Endproc

Saludos.

Hugo C.

unread,
Jun 2, 2014, 3:48:31 PM6/2/14
to publice...@googlegroups.com
Este es el bueno,

Procedure cmdMostrar.Click
If Empty(Alltrim(Thisform.Descrip.Value))
Thisform.Descrip.SetFocus()
Return
ELSE
  * Limpiar cordenadas anteriores
   TRY
      Thisform.oleIE.document.getElementById('txtCordenadas').value = ""
   CATCH
   ENDTRY
       document.getElementById('txtCordenadas').value = coord1;
var infoWin = new google.maps.InfoWindow({
 content: '<<minameid>>' + '<br>' + results[0].formatted_address + '<br>' + '<br>' + 'Coord. ' + coord1
});
infoWin.open(map, marker);

     } else {
       alert("Se ha producido un fallo por: " + status);
     }
   });
 }

   </script>
 </head>

 <body onload="initialize()">
   <INPUT name="txtCordenadas" id="cor" value TYPE="hidden"/>
   <div id="map_canvas" style="width: <<Thisform.oleIE.width-32>>px; height: <<Thisform.oleIE.height-34>>px;"></div>
 </body>
</html>
ENDTEXT
*----------------------
* Convertir en archivo
*----------------------
Strtofile(lcHtml,"MiHtml.htm")
Thisform.oleIE.Navigate2(Fullpath("MiHtml.htm"))
**********************************
* Aqui Esperamos las cordenadas
**********************************
LOCAL lcCordenadas, llErrores
DO WHILE THISFORM.oleIE.Busy()
    DOEVENTS 
ENDDO
llErrores = .F.
DO WHILE .T.
  TRY
  lcCordenadas =Thisform.oleIE.document.getElementById('txtCordenadas').value
  llErrores = .F.
   CATCH
   llErrores = .T.
ENDTRY
IF llErrores == .F. AND NOT EMPTY(lcCordenadas)
  EXIT
ENDIF
ENDDO
MESSAGEBOX(lcCordenadas)
Endif
Endproc

Saludos.

El lunes, 2 de junio de 2014 11:06:26 UTC-6, Jose A. Blasco escribió:

Saúl Piña

unread,
Jun 2, 2014, 4:13:51 PM6/2/14
to publice...@googlegroups.com
Excelente Jose A. Blasco,  Funciona muy bien,

gracias.

Douglas Sánchez

unread,
Jun 2, 2014, 9:25:36 PM6/2/14
to publice...@googlegroups.com
Hola yo tengo como predeterminado firefox y en windows tengo arriba el UAC, uso windows 7 ultimate SP1, y lo probe en varias computadora y no me aparece ese mensaje e igual arriaba tengo el firewall y mi antivirus.

Por eso me extraño que decias del tal mensaje y a mi no me aparece mañana lo probare en una maquina windows 7 home basic a ver que pasa.

Saludes

Douglas

VFPSTEAM BI

unread,
Jun 3, 2014, 2:49:49 AM6/3/14
to publice...@googlegroups.com
Hola buenos días les envió adjunto al mensaje el código en html y java para poder mover el marcador de una dirección especifica.

Aquí el código funcionando.

saludos
http://www.vfpsteam.com

El lunes, 26 de mayo de 2014 12:22:35 UTC-5, Saúl Piña escribió:
Saludos, estoy implementando el prg que me envío Jose A. Blasco, solo me quedan un par de dudas:

1. Como puedo cambiar que se muestre de "Satelite" a "mapa" al visualizar una localización.?


2. Como podría obtener el valor de var y copiarlo a un textbox o a una variable de vfp?

el prg que me envío es el que está adjunto.



_430033OHB.html

Jose Antonio Blasco

unread,
Jun 3, 2014, 5:46:19 AM6/3/14
to Comunidad de Visual Foxpro en Español
Saul, te habia contestado el viernes.  Supongo que no viste el post.

Te comento, yo utilizo la rutina, para llamarla desde mis ficheros de clientes o proveedores, y en esa variable paso el "Nombre" de cliente o proveedor, para que tambien aparezca en el "globo" de informacion, así al imprimirlo, me queda constancia de la persona o empresa que buscaba.

Un saludo.

Jose A. Blasco
Zaragoza - España
Visual FoxPro 9 SP2

"No hay camino hacia la libertad, la libertad es el camino" - Indira Gandhi
“Nunca te olvides de sonreír, porque el día que no sonrías  será un día perdido”  -  Charles Chaplin
“Todo el mundo quiere tener un amigo, pero pocos se toman la molestia de ser uno”
- Anónimo


Jose Antonio Blasco

unread,
Jun 3, 2014, 5:59:23 AM6/3/14
to Comunidad de Visual Foxpro en Español
Disculpa Saul, creo que soy yo el que tiene una "empanada" con tanta pregunta y respuesta.

Un saludo.

Jose A. Blasco
Zaragoza - España
Visual FoxPro 9 SP2

"No hay camino hacia la libertad, la libertad es el camino" - Indira Gandhi
“Nunca te olvides de sonreír, porque el día que no sonrías  será un día perdido”  -  Charles Chaplin
“Todo el mundo quiere tener un amigo, pero pocos se toman la molestia de ser uno”
- Anónimo


Saúl Piña

unread,
Jun 3, 2014, 10:46:46 AM6/3/14
to publice...@googlegroups.com
Saludos VFPSTEAM BI

Con el codigo de ejemplo que envías trabajas directamente con las coordenadas, es correcto?

luis.rea

unread,
Jun 3, 2014, 12:18:59 PM6/3/14
to publice...@googlegroups.com

Así es amigo. Y se guarda en el objeto div que luego puedes acceder y obtener esa información desde vfp.

Las coordenadas se colocan de acuerdo a una dirección específica que se desea o solo colocando el marcador en el mapa.

Revisa este otro ejemplo:
http://www.vfpstylemenuframework.com/geolocalizacion/vfpsruta01.html

saludos

Saúl Piña

unread,
Jun 3, 2014, 12:22:20 PM6/3/14
to publice...@googlegroups.com
Sale pues, voy a analizar y te cuento mis dudas, eres muy amable, gracias.

VFPSTEAM BI

unread,
Jun 3, 2014, 2:27:46 PM6/3/14
to publice...@googlegroups.com
hola aqui les pongo adjunto otro ejemplo ahora de como iniciar en su aplicación con su logotipo y datos empresariales.

El ejemplo ejecutandose lo pueden ver desde aqui

saludos

VFPSTEAM BI
_4300SK6YP.html

VFPSTEAM BI

unread,
Jun 3, 2014, 2:45:57 PM6/3/14
to publice...@googlegroups.com
Hola un ejemplo de como de muchas direcciones en este caso busque CHAPULTEPEC en México, podemos colocar marcadores, su respectiva imagen previa y lineas poligonales entre los puntos de marcación.

Para ver como funciona el ejemplo aqui

Nota para ver la información presionamos click en el marcador.

saludos
VFPSTEAM BI
http://www.vfpsteam.com

El martes, 3 de junio de 2014 11:22:20 UTC-5, Saúl Piña escribió:
_4300T0S2G.html

Hugo C.

unread,
Jun 4, 2014, 10:17:49 PM6/4/14
to publice...@googlegroups.com
Excelente, Gracias.

Saludos.

Saúl Piña

unread,
Jun 5, 2014, 12:37:38 PM6/5/14
to publice...@googlegroups.com
Saludos hugo,

tu crees que con el ejemplo de VFPSTEAM BI se podrá obtener las coordenadas que cambian al momento de mover el globito de gmaps?

SISTEMAS VFPSTEAM

unread,
Jun 5, 2014, 3:36:22 PM6/5/14
to publice...@googlegroups.com
Hola.

por aquí subí un ejemplo para obtener las coordenadas. saludos

VFPSTEAM BI

Hugo C.

unread,
Jun 5, 2014, 5:03:18 PM6/5/14
to publice...@googlegroups.com
El colega VFPSTEAM ya nos dio la solución.

Saludos.
Reply all
Reply to author
Forward
0 new messages