//---------------------------------------------------------------------------- // --> Adrià => Clase que controla un mapa de Google Maps, aportando funcionalidades mas especificas. // --> Esta clase esta pensada para ser extendida añadiendole funcionalidad mas avanzada (p.e. en el caso del entorno) function witmapa(_idPadre){ var numMarcadorNumerado = 0; var gMap = null; var idPadre = _idPadre; var grupoMarcadores = new Array(); var grupoMarcadoresHoteles = new Array(); var divmaps = document.createElement('div'); var padre = $("#"+idPadre); var primerElemento = padre.children(':first-child'); var myOptions; divmaps.id = 'map_canvas'; divmaps.style.width='100%'; divmaps.style.height='100%'; //_vista => satellite para cambiar modo de vista // _zoom => puede fijarse un zoom inicial this.inicializar = function(_vista, _zoom){ //Elemento posterior al mapa if(primerElemento.length == 0) { padre.html(divmaps); } else { primerElemento.before(divmaps); } var inicialitzacionCentral = new google.maps.LatLng(-34.397, 150.644); var zoomdefault = 13; if(_zoom == null) { _zoom = zoomdefault; } if(_vista == 'satellite') { var mapid = google.maps.MapTypeId.SATELLITE; } else { var mapid = google.maps.MapTypeId.ROADMAP; } myOptions = { zoom: _zoom, center: inicialitzacionCentral, mapTypeControl: true, scrollwheel: false, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.DROPDOWN_MENU, position: google.maps.ControlPosition.LEFT_BOTTOM }, panControlOptions: { position: google.maps.ControlPosition.RIGHT_TOP }, zoomControlOptions: { style: google.maps.ZoomControlStyle.MEDIUM, position: google.maps.ControlPosition.RIGHT_BOTTOM }, mapTypeId: mapid }; var isMobile = false; this.gMap = new google.maps.Map(document.getElementById("map_canvas"), myOptions); } this.anadirMarcador = function (marcador){ grupoMarcadores.push(marcador); } // Functión que crea un punto en el mapa, este punto tendra una burbuja this.crearMarcadorMapa = function(_id, latitud, longitud, _titulo, _descripcion,_telefono, _email,_imagen, _icono, iconoPorNumero){ var posicion = new google.maps.LatLng(latitud, longitud); if(_icono != 'default') { var tipoIcono = new google.maps.MarkerImage('/multimedia/utopiasitges.com/mapa/iconos/'+_icono); } if(iconoPorNumero == true){ numMarcadorNumerado++; var iconoNumerado; iconoNumerado = '/thumbnails/phpThumb.php?src='+defaultBlueIcon+'&fltr[]=wmt|'+numMarcadorNumerado+'|3|T|FFFFFF|arial.ttf|100&f=png'; var tipoIcono = new google.maps.MarkerImage(iconoNumerado); } var marcador = new google.maps.Marker({ id: _id, idRelacional: _id, lat:latitud, lon:longitud, map: this.gMap, icon:tipoIcono, numeroMarcador:numMarcadorNumerado, esNumerado:iconoPorNumero, title:_titulo, descripcion: _descripcion, telefono: _telefono, position: posicion, email:_email, imagen:_imagen }); crearBurbuja(marcador, this.gMap); grupoMarcadores.push(marcador); return marcador; } function crearBurbuja(marcador, mapa) { var contentString = ''; if(marcador.title != null) { contentString = '

'+marcador.title+'

'; } if(marcador.descripcion != null) { contentString += '
'+marcador.descripcion+'
'; } if(marcador.imagen != '') { contentString += '
'; } var infowindow = new google.maps.InfoWindow({ content: contentString, maxWidth: 300 }); google.maps.event.addListener(marcador, 'click', function() { infowindow.open(mapa,marcador); return false; }); } // Crea todos los marcadores para la this.crearMarcaresHoteles = function() { var marcadorHotel = this.crearMarcadorMapa("Config3", "41.232509", "1.794763", "Utopia Sitges", " C/ Socias 22 · 08870 Sitges (Barcelona)", "","info@utopiasitges.com", "", "default", ""); grupoMarcadoresHoteles.push(marcadorHotel); } //---> 21/06/2011 David: Funcion accesible externamente ideada para centrar el mapa donde se requiera this.centrar = function(_latitud, _longitud) { var centroMapa = new google.maps.LatLng(_latitud, _longitud); this.gMap.setCenter(centroMapa); this.gMap.setZoom(myOptions.zoom); } this.vaciarArrayMarcadores = function() { numMarcadorNumerado = 0; grupoMarcadores = new Array() } this.getGrupoMarcadoresHoteles = function() { return grupoMarcadoresHoteles; } this.getGrupoMarcadores = function() { return grupoMarcadores; } this.pintarMapa = function() { if(grupoMarcadoresHoteles.length > 0) { var markerBounds = new google.maps.LatLngBounds(); for(var i=0; i Apura el zoom al máximo, si sólo hay 1 se dejará el zoom por defecto if(grupoMarcadoresHoteles.length > 1) { this.gMap.fitBounds(markerBounds); } else { this.centrar(grupoMarcadoresHoteles[0].lat, grupoMarcadoresHoteles[0].lon); } } else{ try { console.log('no hay marcadores para el mapa'); } catch (exception) {} } if(grupoMarcadores.length > 0) { var markerBounds = new google.maps.LatLngBounds(); for(var i=0; i Apura el zoom al máximo, si sólo hay 1 se dejará el zoom por defecto if(grupoMarcadores.length > 1) { this.gMap.fitBounds(markerBounds); } else { this.centrar(grupoMarcadores[0].lat, grupoMarcadores[0].lon); } } else{ try { console.log('no hay marcadores para el mapa'); } catch (exception) {} } } }