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áticamente da los saltos de línea.</p>'+ '<p>Para ver el tutorial <a href="http://jafrancov.com/2010/09/info-window-gmaps-api-v3/">'+ 'clickea aquí</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.
Ahora si es todo por este tutorial, espero les sirva, si tienen dudas ya saben dónde y cómo preguntar 😀
Enjoy this Life!!
algo esta mal cuando es mas de 1 marker.
@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?
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
@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.
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
¿Dónde puedo ver un ejemplo de esa programación? Necesito tener el botón de “Como llegar” en la InfoWindow. Gracias.
@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á
Buenas quisiera saber que libreria debo agregar para poder utilizar Gmaps.
Gracias.
@MyMele Hay que colocar un script al inicio, en el header, puedes checarlo acá http://jafrancov.com/2010/08/bases-gmaps-api-v3/
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
Perdon, lo que llevo es:
http://admin.pumasa.com.mx/descargas/script_gmaps_v3.txt
@Miguel no revisé todo el código pero en el script_gmaps_v3 la función
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
inténtalo de esa manera y cuenta si funciona
A alguien le ha dado problemas con Internet Explorer. Funciona correctamente en Chrome y firefox pero no se ve el mapa en IE9-
@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.
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 ?
@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.
Excelente ejemplo me va de maravilla cuanta claridad!
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**
@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.
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?
@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.
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..
Puedes agregar el botón como cualquier otro tag de html
Con javascript y jquery puedes hacer algo como: