En los sitios web de una compañÃa a menudo se utilizan mapas para mostrarle a los clientes dónde los pueden encontrar. Para esto, Google Maps es excelente.
Pero ¿No serÃa genial añadir el logo de nuestra compañÃa, los estacionamientos cercanos, las estaciones de trenes, y otros datos alternativos en el mapa para ayudar más a los clientes?
Antes de empezar, veamos lo que vamos a crear:
Google Maps API
La API Google Maps te permite embeber mapas directamente en tu sitio web. Sólo se necesita un poco de JavaScript, y algo de CSS para embellecer. Recientemente ha sido lanzada la Version 3 de la API Google Maps que es la que vamos a utilizar.
Obteniendo las coordenadas
Como seguramente no conocen las coordenadas precisas de su locación, les explicaremos una forma rápida que Google ha puesto a nuestra disposición para conocerlas. Cuando conoces la dirección exacta, puedes ingresar una URL de esta forma:
-
http://maps.google.com/maps/geo?q=1+Infinite Liip,+Cupertino,+CA+95014,+USA&output=csv&oe=utf8&sensor=false&key=your_google_maps_api_key
Cuando ingreses esto en tu barra de direcciones, verás lo siguiente:
Las coordenadas del cuartel general de Apple en Cupertino
El primer número es el código del estado en el que está el punto del mapa según Google, y 200 quiere decir que todo está bien. El segundo número muestra cuán precisa es la dirección, en este caso el número es 8, que es bastante bueno. Los últimos dos números son latitudes y longitudes, que son los números que necesitamos.
Añadiendo el mapa a tu web
Abre tu editor HTML favorito y crea un archivo HTML estándar con codificación UTF-8.
Primero que nada es necesario crear el puerto de visualización y decirle a nuestro archivo HTML que obtenga el archivo Javascript del código Google.
Añade estas lÃneas entre <head> y </head>:
-
<script src="http://maps.google.com/maps/api/js?sensor=false" type="text/javascript"></script>
Luego de la URL, notarás sensor=false. Dado que no utilizamos ningún sensor, como un GPS, para localizar el lugar, esto se programa en false. Justo debajo de lo que hemos insertado, escriban lo siguiente:
-
<script type="text/javascript"><!--
-
function initialize() {
-
var latlng = new google.maps.LatLng(57.0442, 9.9116);
-
var settings = {
-
zoom: 15,
-
center: latlng,
-
mapTypeControl: true,
-
mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU},
-
navigationControl: true,
-
navigationControlOptions: {style: google.maps.NavigationControlStyle.SMALL},
-
mapTypeId: google.maps.MapTypeId.ROADMAP
-
};
En la lÃnea 2 creamos la función initialize(). Dentro de esta function vamos a definir las configuraciones básicas del mapa. En la lÃnea 3 creamos una nueva variable, latlng. latlng que representa las latitudes y longitudes. La variable contiene las coordenadas que utilizaremos como centro de nuestro mapa.
Luego de esto creamos la variable settings. Aquà tenemos muchas opciones.
- zoom especÃfica cuánto zoom tundra el mapa.
- center especÃfica nuestro centro. Al escribir latlng, nos referemos a la variable que hemos creado antes y se utilizará la coordenada dentro de ésta.
El último código cambia el diseño del mapa para que sea un poco más minimalista. Los controles en la esquina superior derecha (Map, Satellite, Terrain) se cambian por un menu desplegable y los controles de navegación/escalamiento en el lado izquierdo se cambiar por controles pequeños.
mapTypeId: google.maps.MapTypeId.ROADMAP define que nuestro mapa debe ser del tipo ROADMAP - lo puedes cambiar por SATELLITE, HYBRID o TERRAIN.
Debajo del código anterior, escriban esto:
-
var map = new google.maps.Map(document.getElementById("map_canvas"), settings);
Este código crea la variable map, y define que el mapa debe utilizar las configuraciones que hemos creado.
Escriban:
-
}
-
</script>
Para terminar la función, y en body, escriban esto:
-
<body onload="initialize()">
-
<div id="map_canvas" style="width:800px; height:500px"></div>
-
</body>
Al hacer esto le decimos a nuestro sitio que ejecute la función the initialize() al cargar, y que inserte un div con el tamaño que deseamos que tenga nuestro mapa.
Añadiendo marcadores
Ahora debemos añadir algunos marcadores. Comencemos por crear los estándar y luego los personalizaremos.
Justo debajo de:
-
var map = new google.maps.Map(document.getElementById("map_canvas"), settings);
Inserten el siguiente código:
-
var companyPos = new google.maps.LatLng(57.0442, 9.9116);
-
var companyMarker = new google.maps.Marker({
-
position: companyPos,
-
map: map,
-
title:"Some title"
-
});
Primero, hemos creado la variable companyPos, donde especificamos la posición del marcador. Luego hemos creado al marcador en sà utilizando la variable companyMarker.
Personalizando los marcadores
Podemos hacer mucho más bonitos nuestros marcadores. Simplemente creemos una imagen en Photoshop con un tamaño de 100×50 pÃxeles, y creemos algo similar a esto:

Luego, creemos una sombra para la imagen:

Para añadir estas imágenes como marcadores, tenemos que cambiar el código del marcador por esto:
-
var companyLogo = new google.maps.MarkerImage('images/logo.png',
-
new google.maps.Size(100,50),
-
new google.maps.Point(0,0),
-
new google.maps.Point(50,50)
-
);
-
var companyShadow = new google.maps.MarkerImage('images/logo_shadow.png',
-
new google.maps.Size(130,50),
-
new google.maps.Point(0,0),
-
new google.maps.Point(65, 50)
-
);
-
var companyPos = new google.maps.LatLng(57.0442, 9.9116);
-
var companyMarker = new google.maps.Marker({
-
position: companyPos,
-
map: map,
-
icon: companyLogo,
-
shadow: companyShadow,
-
title:"Company Title"
-
});
La variable companyImage apunta al nombre de la imagen del logo. Luego define el tamaño, origen y el tip de la imagen (dónde estará la imagen añadida a la coordenada). Luego, hacemos exactamente lo mismo para la sombra en la variable companyShadow. En la variable companyMarker añadimos icon y shadow, y listo.
Ahora, si actualizas tu sitio verás que el marcador ha cambiado por tu propio logo. Para añadir más marcadores, sigue simplemente el mismo método, cambiando los nombres de las variables.
Si tienes dos marcadores muy cerca el uno del otro, quizá debas agregar algo de z-index. El marcador con el z-index más alto, es el que más arriba está:

Añadir zIndex nos permite seleccionar qué marcador debe ir arriba.
-
var companyMarker = new google.maps.Marker({
-
position: companyPos,
-
map: map,
-
icon: companyImage,
-
shadow: companyShadow,
-
title:"Høgenhaug",
-
zIndex: 4
-
});
Añadiendo cajas de información
Para añadir una descripción de tu compañÃa que aparezca cuando un visitante hace clic en el logo podemos agregar un infobox. Con la API Google Maps esto es fácilisimo.

Peguemos este código luego de definir la variable map:
-
var contentString = '<div id="content">'+
-
'<div id="siteNotice">'+
-
'</div>'+
-
'<h1 id="firstHeading" class="firstHeading">Høgenhaug</h1>'+
-
'<div id="bodyContent">'+
-
'<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>'+
-
'</div>'+
-
'</div>';
-
-
var infowindow = new google.maps.InfoWindow({
-
content: contentString
-
});
Para hacer que las cajas de información aparezcan al hacer clic en nuestro logo, simplemente debemos añadir este código justo antes del último } en la función initialize():
-
google.maps.event.addListener(companyMarker, 'click', function() {
-
infowindow.open(map,companyMarker);
-
});
Para hacer un poco más bonita la caja de información, añadamos algo de estilo en nuestra hoja de estilos:
-
body {
-
font-family: Helvetica, Arial, sans-serif;
-
font-size:10pt;
-
}
Y ahà lo tienen. Un Google Map bonito y fácilmente añadido en tu sitio web o blog.
Descarga
Para descargar los archivos de muestra hagan clic aquÃ.
Fuente: Stiern








Martes, 3 de Noviembre de 2009 a las 21.49
[...] Como seguramente no conocen las coordenadas precisas de su locación, les explicaremos una forma rápida que Google ha puesto a nuestra disposición para conocerlas. Cuando conoces la dirección exacta, puedes ingresar una URL de esta forma: PLAIN TEXT [...]
Jueves, 5 de Noviembre de 2009 a las 12.22
BuenÃsimo! Me sirve una montón. Gracias
Domingo, 8 de Noviembre de 2009 a las 12.31
Muchas gracias por el aporte, ya lo estaré usando en algun que otro proyecto. Ahora me gustarÃa saber como hacer para que los usuarios puedan colocar un marcador y guardarlos para luego mostrarlos en el mapa. Saludos y quedo a la espera de alguna respuesta.
Sábado, 14 de Noviembre de 2009 a las 12.19
Buenisimo! lo estoy aplicando a un sitio web, todo bárbaro hasta el momento. Una sola pregunta, a dónde puedo cambiar en vez de que sea mapa que sea satélite? Espero su respuesta, gracias!
Lunes, 16 de Noviembre de 2009 a las 11.40
FÃjate en el subtÃtulo "Añadiendo el mapa a tu web". AllÃ, en el segundo ejemplo de código, en la lÃnea 11 dice:
mapTypeId: google.maps.MapTypeId.ROADMAP
ROADMAP es lo que indica que la vista va a ser de mapa. Puedes cambiarlo por SATELLITE, HYBRID o TERRAIN, según quieras. ¡Saludos!
Lunes, 16 de Noviembre de 2009 a las 19.18
Gracias Alejandra! ahora pruebo
Martes, 17 de Noviembre de 2009 a las 22.08
Tengo mucha info en uno de las paginas, el div donde va el map está casi al pie de la pagina, como hago para colocarlo en el div? aplica lo mismo para la etiqueta ??? es que asi lo coloco y no aparece nada
Agradezco respuesta
saludos
Jueves, 19 de Noviembre de 2009 a las 12.01
Sinceramente no entiendo la consulta. Dices que el div donde va el map está casi al pie de página, y luego preguntas cómo haces para colocarlo en el div... ¿Para colocar qué y en qué div?
Espero tu respuesta asi puedo ayudarte.
Martes, 24 de Noviembre de 2009 a las 13.30
Tengo un gran problema, la api de google no funciona para sitios xhtml 1.1 con mime application/xhtml+xml, pues usa docoument.write, y el metodo write no existe en el objeto document para xhtml 1.1, el bug ya esta reportado en la api, la unica solución en cargarla usando google.load, pero esta las carga por ajax, y requiere de una key, que no puedo pagar, pues lo necesito para una intranet.
Alguien tenga un sitio con mime application/xhtml+xml y halla encontrado un fix/patch a esta api?
Aqui esta reportado el issue:
http://code.google.com/p/gmaps-api-issues/issues/detail?id=530
Martes, 15 de Diciembre de 2009 a las 08.55
Quizas sea una pregunta tonta pero imagino que para implementar Google Maps API V3 sera necesario una cuenta de Google ¿o se puede hacer sin necesidad de una cuenta?
Saludos y Gracias.
Martes, 15 de Diciembre de 2009 a las 12.59
No es necesario tener una cuenta en Google
Martes, 15 de Diciembre de 2009 a las 20.43
Entonces si se puede hacer ¿como se hace para añadir la direccion que quieres? En el tutorial no lo explica.
Saludos y Gracias.
Martes, 16 de Marzo de 2010 a las 23.58
Gracias Alejandra, de hecho ya ni yo entendi lo que queria, creo que he aprendido mucho desde entonces. Saludos
Martes, 20 de Abril de 2010 a las 19.14
Muy my bueno, gracias
Jueves, 6 de Mayo de 2010 a las 19.39
Hola alejandra, He visto que has contestado y dado algunas solcuiones. Estoy trabajando un mapad de spreadsheets. Me gustaria saber si es posible y como, se pueden poner URL diferentes en cada uno de los titulos de los globos.
Muchas gracias!
Viernes, 16 de Julio de 2010 a las 06.14
Genial! Super bien explicado y muy muy util!
Viernes, 13 de Agosto de 2010 a las 19.03
puedes seguir haciendo tutoriales ??
por ejemplo :
Arrastrar un MARCADOR...y saber la cordenada
o
escribir en una ventana y mostrarla en el MAPA