Mapas con marcadores

facebook-svg gplus-svg twitter-svg

Esta es una continuación de Mapas Google.

Es muy interesante poder marcar un punto en el mapa. Lo podemos hacer instanciando un nuevo marcador ( marker ) dentro de la función initialize().

Un ejemplo básico.

1). Instanciamos un nuevo marcador.


		// las coordenadas de Barcelona		
		var ubicacion = new google.maps.LatLng(41.3887900, 2.1589900);
		var marcador = new google.maps.Marker({
				position: ubicacion, // las coordenadas de Barcelona		
				map: mapa, // el mapa donde aparece - una instancia de Map
				title: "Barcelona" // aparece al pasar con el ratón por encima 
		});	

2). Este código tiene que aparecer dentro de la función initialize(). De esta manera la chincheta será inicializada junto con el mapa.


var mapa;
function initialize() {
		// las coordenadas de Barcelona		
		var ubicacion = new google.maps.LatLng(41.3887900, 2.1589900)
	
		var opcionesDeMapa = {
				zoom: 8,
				center: ubicacion,
				mapTypeId: google.maps.MapTypeId.ROADMAP //SATELITE, HYBRID, ROADMAP, TERRAIN
		};
		// instancia un nuevo objeto Map
		mapa = new google.maps.Map(document.getElementById("mapa"), opcionesDeMapa);										
		// instancia un nuevo marcador ( la chincheta )
		var marker = new google.maps.Marker({
				position: ubicacion,
				map: mapa,
				title: "Barcelona",
		});		
}// acaba la función initialize
		// inicializa el mapa cuando la ventana se haya cargado:
		google.maps.event.addDomListener(window, "load", initialize);

Vea un ejemplo de mapa con marcador.

Cambiar la imagen del marcador

Cambiar la imagen del marcador es muy fácil. Primero hay que definir la nueva imagen, por ejemplo:

var bandera = 'images/bandera.png';

Después hay que añadir esta nueva propiedad del marcador:

icon: bandera;


var bandera = 'images/bandera.png';
var marcador = new google.maps.Marker({
		position: ubicacion,
		map: mapa,
		title: 'Barcelona',
		icon: bandera; 
});

Este código tiene que aparecer, como antes, dentro de la función initialize(). De esta manera la bandera será inicializada junto con el mapa.


var mapa;
function initialize() {
		// las coordenadas de Barcelona		
		var ubicacion = new google.maps.LatLng(41.3887900, 2.1589900)
	
		var opcionesDeMapa = {
				zoom: 8,
				center: ubicacion,
				mapTypeId: google.maps.MapTypeId.ROADMAP //SATELITE, HYBRID, ROADMAP, TERRAIN
		};
		// instancia un nuevo objeto Map
		mapa = new google.maps.Map(document.getElementById("mapa"), opcionesDeMapa);										
		// instancia un nuevo marcador ( la bandera )
		var bandera = "images/bandera.png";
		var marcador = new google.maps.Marker({
				position: ubicacion,
				map: mapa,
				title: "Barcelona",
				icon: bandera
		});"; 
}// acaba la función initialize
		// inicializa el mapa cuando la ventana se haya cargado:
		google.maps.event.addDomListener(window, "load", initialize);

Vea un ejemplo de mapa con marcador personalizado.

Marcadores múltiples

Podemos también marcar varios puntos en el mapa. Para esto habrá que instanciarlos uno por uno. Empezamos construyendo un array de objetos, cada objeto representando una chincheta en el mapa.

Cada objeto del array chinchetas tiene 4 propiedades: title (el titulo que aparecerá al pasar por encima del marcador) pin (la imagen que será utilizada para marcar el punto) lat (la latitud) y lng (la longitud). Google pone a nuestra disposición una amplia variedad de iconos para utilizarlos con Google Maps.


		var chinchetas = [
		{title: 'Barcelona', pin:'red-dot', lat:41.3887900, lng:2.1589900},
		{title: 'Figueres', pin:'green-dot', lat:42.268750, lng:2.957293}, 
		{title: 'Tarragona', pin:'yellow-dot', lat:41.128584, lng:1.226946},
		];

Para marcar los puntos vamos a utilizar un bucle for ( for loop ) que recorre el array de las chinchetas e instancia los marcadores uno por uno:


		var marcador, pin;
		// la carpeta donde se encuentran los iconos de Google
		var url = "http://maps.google.com/mapfiles/ms/micons/";
		for( var i = 0; i < chinchetas.length; i++){
		// el icono utilizado 
		pin = url + chinchetas[i].pin + ".png";
		// nuevo marcador
		marcador = new google.maps.Marker({
				position: new google.maps.LatLng(chinchetas[i].lat, chinchetas[i].lng),
				map: mapa,
				title: chinchetas[i].title,
				icon: pin
		});		
		}

Veamos todo el código junto.


var mapa;
function initialize() {
		// las coordenadas de Barcelona		
		var chinchetas = [
		{title: "Barcelona", pin:"red-dot", lat:41.3887900, lng:2.1589900},
		{title: "Figueres", pin:"green-dot", lat:42.268750, lng:2.957293}, 
		{title: "Tarragona", pin:"yellow-dot", lat:41.128584, lng:1.226946},
		];
		
		var centroMapa = new google.maps.LatLng(41.3887900, 2.1589900);
	
		var opcionesDeMapa = {
				zoom: 8,
				center: centroMapa,
				mapTypeId: google.maps.MapTypeId.ROADMAP //SATELITE, HYBRID, ROADMAP, TERRAIN
		};
		// instancia un nuevo objeto Map
		mapa = new google.maps.Map(document.getElementById("mapa"), opcionesDeMapa);										
		
		var marcador, pin;
		// la carpeta donde se encuentran los iconos de Google
		var url = "http://maps.google.com/mapfiles/ms/micons/";
		for( var i = 0; i < chinchetas.length; i++){
		// el icono utilizado 
		pin = url + chinchetas[i].pin + ".png";
		// nuevo marcador
		marcador = new google.maps.Marker({
				position: new google.maps.LatLng(chinchetas[i].lat, chinchetas[i].lng),
				map: mapa,
				title: chinchetas[i].title,
				icon: pin
		});		
	}
}// acaba la función initialize
		// inicializa el mapa cuando la ventana se haya cargado:
		google.maps.event.addDomListener(window, "load", initialize);

Vea un ejemplo de mapa con varios marcadores.