Jugando con la API de Google maps

Hoy me ha tocado montar un administrador de áreas de actuación de una empresa para lo que tenemos una serie de geolocalizaciones y rango de kilómetros de influencia. Como el cliente no se sabe la longitud y latitud de las zonas, primero ha tocado gracias a la API de Google maps el calcular esas coordenadas.

var geocoder = new google.maps.Geocoder(); 
geocoder.geocode({
		address : ' La dirección a buscar, España', 
		region: 'no' 
	 },
	 function(results, status) {
		 if (status.toLowerCase() == 'ok') {                            
			var _latitud = results[0]['geometry']['location'].lat();
			var _longitud = results[0]['geometry']['location'].lng();
		 }else{
			alert('La dirección especificada no se ha podido encontrar');                                             
		 }
	 }
 );

Y me he montado un objeto de JavaScript para dibujar un mapa de Google maps y permitir dibujar o eliminar círculos sobre él.

var obj_mapa = {
	mapa:null,
	circulos:[],
	init:function(){
		var mapOptions = {
			zoom: 5,
			center: new google.maps.LatLng(39, -4)
		};
		// cargamos el mapa en la capa #mapazonas
		this.mapa = new google.maps.Map(document.getElementById('mapazonas'), mapOptions);
		
		/* en caso de tener que cargar círculos desde el principio */ 
		var _self = this;
		$('input[name="longitud[]"]').each(function(index){
			var _long = $(this).val();
			var _lat = $('input[name="latitud[]"]:eq('+index+')').val();
			var _km = $('input[name="km_accion[]"]:eq('+index+')').val();
			_self.add(_lat, _long, _km);
		});
	}, 
	add:function(latitud, longitud, km){
		var populationOptions = {
			strokeColor: '#12805b',
			strokeOpacity: 0.8,
			strokeWeight: 1,
			fillColor: '#12805b',
			fillOpacity: 0.35,
			map: this.mapa,
			center: new google.maps.LatLng(latitud, longitud),
			radius: km * 1000
	  };    
	  this.circulos.push(new google.maps.Circle(populationOptions));
	},
	del:function(index){
		this.circulos[index+1].setMap(null);
		this.circulos.splice(index+1, 1);
	}
};

Y para interactuar con la clase:

// para iniciar el mapa
obj_mapa.init()

// para añadir un nuevo circulo (se guardará dentro del array obj_mapa.circulos)
obj_mapa.add(_latitud, _longitud, _kilometros_de_radio);

// y por ultimo para borrarlo (el parmámetro _index sería la posición del mapa en el array obj_mapa.circulos)
obj_del(_index)

Y por supuesto, incluir la API de google porque si no complicado esta que funcione…..

<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
Dejar un comentario?

0 Comentarios.

Deje un comentario


NOTA - Puede usar estosHTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.