Alex Franco

Blog de Alex Franco, aquí podrás encontrar temas de tecnología, desarrollo web y móvil, Python, Django, Mongo, DBs y… otros temas más
Home  /  Codigo  /  Info Window en GMaps API v3

Info Window en GMaps API v3

Alex Franco API, GMaps, InfoWindow, JavaScript, jQuery, Maps 24 Comments

A partir de este post, me enfocaré en el tema, si nunca has hecho nada con GMaps, te sugiero leas las bases del manejo de la API de GMaps v3.

¿Qué es un Info Window?

Quizá han visto que en muchos de los mapas de mostrados con la tecnología de Google, al dar clicks sobre los marcadores, mapa, formas, etc., nos aparece un cuadro con información, bien, pues eso es un Info Window.

Las opciones que usaremos para la creación del objeto de InfoWindow contendrá los siguientes campos:

  • content contiene una cadena de texto o nodo DOM que mostrará al abrir la ventana de información.
  • position contiene el LatLng al cuál estará asignado, ten en cuenta que si es asignada a un marcador, automáticamente adquiere el valor de su posición, en caso de no asignarle algún LatLng toma el centro que se muestra por primera vez del mapa, para los polígonos trabaja de manera diferente y lo hablaremos en otro post.
  • maxWidth especifica el ancho máximo en pixeles, que podrá adquirir la ventana, por default adquiere el ancho del contenido, sin saturar el espacio del mapa, haciendo saltos de línea en automático, cuando el contenido ha alcanzado el máximo permitido, se expandirá verticalmente igual, sin saturar el espacio del mapa. En caso de que se establezca un determinado ancho, el texto en automático dará saltos de línea al llegar al límite establecido, si el contenido es mucho se extenderá verticalmente sin saturar el espacio.

El contenido del InfoWindow puede contener una cadena de texto, un fragmento de código HTML, o un mismo elemento DOM. Para establecer este contenido, debe hacerse una llamada explícita al constructor del InfoWindow con setContent(). Ten cuidado al usar div’s ya que si le pones estilos y sobrepasa el espacio puede “derramarse” el contenido fuera del InfoWindow.

Ahora si vamos directo al código, este ya solamente es el JavaScript, recuerda agregar jQuery también:

var myLatlng = new google.maps.LatLng(20.68017,-101.35437);
var myOptions = {
  zoom: 13,
  center: myLatlng,
  mapTypeId: google.maps.MapTypeId.ROADMAP
}

var map = new google.maps.Map($("#map_canvas").get(0), myOptions);

var contentString = '<div id="div_ejemplo">'+
    '<p>Este es un ejemplo de <b>InfoWindow</b>, ' +
    'como puedes ver puedes agregar cualquier cosa, ' +
    'cualquier <em>HTML</em>.</p>' +
    '<p>Este InfoWindow tiene un ancho de 200px ' +
    'y autom&aacute;ticamente da los saltos de l&iacute;nea.</p>'+
    '<p>Para ver el tutorial <a href="http://jafrancov.com/2010/09/info-window-gmaps-api-v3/">'+
    'clickea aqu&iacute;</a>.</p>'+
    '</div>';

var infowindow = new google.maps.InfoWindow({
    content: contentString,
    maxWidth: 200
});

var marker = new google.maps.Marker({
    position: myLatlng,
    map: map,
    title:"Ejemplo InfoWindow"
});

google.maps.event.addListener(marker, 'click', function() {
  infowindow.open(map,marker);
});

Solamente un último detalle antes de terminar, podrán observar que al final vemos un addListener, para que se pueda mostrar el InfoWindow al hacer click, es necesario agregar un Listener, que valga la redundancia, está a la escucha de un click, analicémoslo:

google.maps.event.addListener(marker, 'click', function() {
  infowindow.open(map,marker);
});

Vamos por partes google.maps.event.addListener, es una función integrada de la API que agregará el listener, requiere de 3 cosas, a quién se le va a asignar el listener, en este caso a marker que es la variable que almacena el objeto del marcador que se dibuja, el tipo de listener que para este caso es un ‘click’ y por último el proceso que realizará, que para el ejemplo es una función. Dentro de la función especificamos lo que hará el listener, haremos uso de infowindow que es la variable que contiene el objeto con los detalles del InfoWindow por supuesto, a la cual se le llama la función open() que es la que se encargará de mostrar el InfoWindow, y esta funcióna a su vez, requiere de 2 parámetros, el primero en qué objeto de mapa se va a agregar (map) y segundo, a qué objeto se le va a asignar (marker), en caso de que no se especifique la segunda variable, se mostrará en el centro inicial del mapa.

Ver Demo de InfoWindow GMaps API v3

Ahora si es todo por este tutorial, espero les sirva, si tienen dudas ya saben dónde y cómo preguntar 😀

Enjoy this Life!!

Relacionado

About Author

Alex Franco

 IT

Previous Article Primeros pasos con la API v3 de Google Maps (Mapa y Marcador)
Next Article Marcador arrastrable y cómo obtener su Lat/Lng GMaps API v3

Related Posts

  • Enviar correo personalizado automáticamente cuando respondan un Formulario de Google

    Enviar correo personalizado automáticamente cuando respondan un Formulario de Google

  • Django + AllAuth + Google OAuth 2.0

    Django + AllAuth + Google OAuth 2.0

  • Agregar número consecutivo y enviar correo al contestar Formulario de Google Drive

24 Comments

  1. panchicore Reply
    2011-02-17 at 2:20 pm

    algo esta mal cuando es mas de 1 marker.

    • Alex Franco Reply
      2011-02-17 at 3:36 pm

      @panchicore quizá a lo que te refieres es que no cierra en automático el infowindow y se quedan todos plasmados, para eso checa este post, o te refieres a otra cosa?

  2. marisela Reply
    2011-05-18 at 2:43 pm

    Hola

    Estoy aprendiendo de este tema y tengo una duda ¿que debo hacer para que en la ventana informativa me aparezca el menu que sale normalmente en los mapas de google, es decir las opciones “como llegar” “buscar alrededores”

    Gracias de antemano

    • Alex Franco Reply
      2011-05-18 at 2:57 pm

      @marisela pues, esos menús o links son algo que tienes que programar, no son como llamar una función de GMaps y listo, hay que entrarle a la API y desarrollarlo, en unos días publicaré el cómo trazar rutas, pero pues es una pequeña cosa de todo lo que puedes hacer.

      • marisela
        2011-05-18 at 3:05 pm

        Pero no existe la opción de llamar a esas funcionalidad de google maps con alguna api u otra ya que he visto sitios en tienen un mapa con marcas y les aparece la dirección y este menu, perdona mi ignorancia

      • Arz
        2012-11-25 at 10:52 pm

        ¿Dónde puedo ver un ejemplo de esa programación? Necesito tener el botón de “Como llegar” en la InfoWindow. Gracias.

      • Alex Franco
        2012-11-26 at 2:15 pm

        @Arz el link que te aparezca de “cómo llegar” tienes que crearlo en tiempo de ejecución, y para hacer lo de las rutas checa acá

  3. MyMele Reply
    2012-01-19 at 11:14 am

    Buenas quisiera saber que libreria debo agregar para poder utilizar Gmaps.
    Gracias.

    • Alex Franco Reply
      2012-01-23 at 1:47 pm

      @MyMele Hay que colocar un script al inicio, en el header, puedes checarlo acá http://jafrancov.com/2010/08/bases-gmaps-api-v3/

  4. Miguel Reply
    2012-02-23 at 4:54 pm

    Hola, tengo un problema y quiero ver si me puedes ayudar, estaba utilizando la V2 de Gmaps para mostrar unos marcadores y sus respectivos infowindows lo quiero hacer pero para la V3 pero tengo algunos problemas.

    Mi codigo que funcionaba en la V2 es el siguiente:
    admin.pumasa.com.mx/descargas/script_gmaps_v2.txt

    Lo que mostraba era algo asi:
    http://admin.pumasa.com.mx/descargas/muestra_gmapsv2.jpg

    Lo que llevo hasta el momento es:
    admin.pumasa.com.mx/descargas/script_gmaps_v2.txt

    Nota: En la V2 ocupaba la longitud y la latitud de cada marcador, para el V3 uso el Geocode que saque de tu otro articulo.

    Saludos y Gracias de Antemano

    • Miguel Reply
      2012-02-23 at 4:57 pm

      Perdon, lo que llevo es:
      http://admin.pumasa.com.mx/descargas/script_gmaps_v3.txt

      • Alex Franco
        2012-02-25 at 2:46 pm

        @Miguel no revisé todo el código pero en el script_gmaps_v3 la función

        map.addOverlay(marker);

        pertenece a la API de GMaps v2, quedó obsoleta y ya no hace nada en la v3, para agregar el marcador al mapa ahora es

        marker.setMap(map);

        inténtalo de esa manera y cuenta si funciona

  5. carlos Reply
    2012-04-23 at 1:46 pm

    A alguien le ha dado problemas con Internet Explorer. Funciona correctamente en Chrome y firefox pero no se ve el mapa en IE9-

    • Alex Franco Reply
      2012-04-23 at 3:52 pm

      @carlos si lo carga, a menos que estés usando alguna cosa rara con JS que puede que no encuentre el Div que le indicas.

  6. Gil Sancho Reply
    2012-06-07 at 11:17 am

    Hola,
    Tengo una serie de marcas en mi mapa, pero quisiera saber si se puede abrir un infowindow desde un boton externo, no desde la marca sino que pueda tener un listado de botones y al darle click que me abra la marca dentro del mapa ?

    • Alex Franco Reply
      2012-08-06 at 11:58 am

      @GilSancho Si es posible, siempre y cuando crees las instrucciones y los ligues lógicamente al momento de cargarlos, es decir, si tus marcadores son dinámicos y variables en número y lugar, al momento de que asignes un infowindow a un marcador, este tendra una llave (key), que es la que en una función deberás mandar llamar para abrir el infowindow. He hecho esto antes, ya regresé a bloggear espero pronto poner un ejemplo al respecto.

  7. Carlos Arias Reply
    2012-11-08 at 2:31 pm

    Excelente ejemplo me va de maravilla cuanta claridad!

  8. Carlos Reply
    2013-02-21 at 1:36 am

    Oye realmente no Entiendo nada puse el codigo asi y no sale… No todo el mundo entiende lo que otro programa puede ser mas especifico por favor

    **Código Editado**

    • Alex Franco Reply
      2013-04-16 at 2:52 pm

      @Carlos pues creo que nunca lo iba a mostrar de esa manera, para este post y los consecuentes, solamente me estoy enfocando en la parte central del tema que estoy publicando, si quieres aprender por qué no aparece, al inicio del post puse una liga para que veas los post anteriores de la API de GMaps y aprendas cómo hacer todo desde un inicio, no es copiar el código y listo, hay qué entender un poco de CSS, HTML, Javascript/jQuery para poder echarlo a andar.

  9. Renato Reply
    2013-11-21 at 6:14 pm

    Hola! estoy desarrollando una aplicacion web usando base de datos, resulta que cargo varios maker, y al mismo tiempo le agrego a cada maker un infowindow (la misma variable, seteo el contenido, tambien he probado crear un infowindow por maker), pero al mostrar el mapa solo me carga el infowindow en el ultimo maker creado :/, hago click en cualquier maker, pero solo me carga el ultimo infowindow asignado, cual podrá ser mi problema?

    • Alex Franco Reply
      2013-11-21 at 9:04 pm

      @Renato necesitaría ver el código pero es muy común que pase, si no me equivoco, estás asignando el infowindow al marcador en un mal lugar, solo habría que corregir eso.

  10. Yuniesky Reply
    2016-06-29 at 3:29 pm

    Hola, estoy usando la API v3 de google maps para mostrar las inciativas de mi empresa.. Estoy usando odoo y le defino a cada iniciativa los campos del addrees necesarios para lograr la geolocalización.. Ya me funciona todo, pero ahora necesito agregar un botón en el infoWindow del mapa.. He visto que existen varias formas de adicionar el botón, pero necesito que al darle clic haga algo.. Tienen algún ejemplo??
    Gracias de antemano..

    • Alex Franco Reply
      2016-08-24 at 12:05 pm

      Puedes agregar el botón como cualquier otro tag de html

      <button class="MiClase" id="MiID" value="Enviar" />

      Con javascript y jquery puedes hacer algo como:

      $("#MiID").click(function () { 
          ...
      });
      
  11. Pingback: Marcador arrastrable y cómo obtener su Lat/Lng GMaps API v3 | Alex Franco

Responder a MyMeleCancelar respuesta

Posts populares

  • Geocode Simple: Buscar direcciones (coordenadas a partir de direcciones) con GMaps API v3
  • Buscar y trazar rutas con GMaps API v3
  • Recuperar o ver las claves de las redes inalámbricas en tu Mac (o cualquier App)
  • Enviar correo después de contestar Formulario de Google Drive automáticamente

Suscríbete

Suscríbirme!

Quizá te interese

  • Enviar correo después de contestar Formulario de Google Drive automáticamente
  • Qué características de HTML5 soporta tu navegador
  • 3er Destilando Web Guanajuato
  • Aldea Digital – Día CUATRO (Final) y Conclusiones
Alex Franco 2009 - 2023