/* Funciones relativas al funcionamiento de GMAPS */ var map; var infoWindow = null; var bounds; var zoomLevel = null; var latlng = null; var zoomear = true; var centrar = true; /** * Se encarga de arrancar variables y demas para el mapa de google * @return */ function arrancaMaps() { document.getElementById("mapa").innerHTML = ""; infoWindow = new google.maps.InfoWindow(); bounds = new google.maps.LatLngBounds(); if (zoomLevel == null) { zoomLevel = 6; } if (latlng == null) { latlng = new google.maps.LatLng(40.430224,-3.713379); } var myOptions = { zoom: zoomLevel, center: latlng, navigationControl: true, mapTypeControl: false, scaleControl: false, mapTypeId: google.maps.MapTypeId.ROADMAP }; map = new google.maps.Map(document.getElementById("mapa"), myOptions); google.maps.event.addListener(map, 'click', function(){ closeInfoWindow(); }); google.maps.event.addListener(map, 'zoom_changed', function() { zoomLevel = map.getZoom(); }); // esto es para ir guardando el centro que ponga el usuario google.maps.event.addListener(map, 'center_changed', function() { var location = map.getCenter(); latlng = new google.maps.LatLng(location.lat(),location.lng()); }); cargaIntervMaps(); } function closeInfoWindow() { infoWindow.close(); } /** * Se encarga de posicionar las bases en el mapa de google * @return */ function cargaIntervMaps() { $.ajax({ complete: function (e, XHR, options) {}, contentType: "application/x-www-form-urlencoded;charset=UTF-8", data: { bandera: $("#bandera").val(), autonomia: $("#autonomia").val(), provincia: $("#provincia").val() }, dataType: "json", error: function(xhr, ajaxOptions, thrownError){ setAvisosDialogText('Se ha producido un error al realizar la carga de las playas.'); $('#avisos_dialog').dialog('open'); }, success: function(json) { var contenido = ""; if (json.resultado == "OK") { if (json.playas) { for ( var i = 0; i < json.playas.length; i++) { montaUbicacion(json.playas[i]); } zoomear = false; centrar = false; } } else { setAvisosDialogText('Se ha producido un error al realizar la carga de las playas.'); $('#avisos_dialog').dialog('open'); } }, type: "POST", url: 'playas.do' }); } function montaUbicacion(json) { if (json.latitud && json.longitud) { var latR = parseFloat(json.latitud.replace(",",".")); var lonR = parseFloat(json.longitud.replace(",",".")); var img_status = ""; if (json.bandera == "V") { img_status = "images/playas/bandera-verde.png"; } else if (json.bandera == "A") { img_status = "images/playas/bandera-amarilla.png"; } else if (json.bandera == "R") { img_status = "images/playas/bandera-roja.png"; } else { img_status = "images/playas/bandera-blanca-new.png"; } var image = new google.maps.MarkerImage(img_status, new google.maps.Size(32, 32), new google.maps.Point(0,0), new google.maps.Point(0, 32), new google.maps.Size(32, 32)); var marker = new google.maps.Marker({ map: map, position: new google.maps.LatLng(latR, lonR), icon: image }); google.maps.event.addListener(marker, 'click', function(){ openInfoWindow(marker, json); }); // verificamos que centrar este a true, que solo ocurre en la primera carga, para centrar el mapa en las // bases que carguemos if (centrar) { var latlngAux = new google.maps.LatLng(marker.getPosition().lat(), marker.getPosition().lng()); bounds.extend(latlngAux); } // verificamos que zoomear esta a true, que solo ocurre en la primera carga, para ajustar el zoom en las // bases que carguemos if (zoomear) { map.fitBounds(bounds); } } else { //alert("La base con indicativo " + json.indicativo + " no tiene datos de longitud y latitud"); } } function openInfoWindow(marker, content) { var estado = ""; var motivo = ""; var accesoPlaya = ""; var medusas = ""; var ayuda_bano = ""; var url = $('#urlFic').val(); if (content.bandera == "V") { estado = "Verde"; color_bandera = "green"; } else if (content.bandera == "A") { estado = "Amarilla"; color_bandera = "rgb(245, 198, 9)"; } else if (content.bandera == "R") { estado = "Roja"; color_bandera = "red"; } else if (content.bandera == "B") { estado = "Blanca"; color_bandera = "black"; } if (content.motivo_bandera == "1") { motivo = "Estado de la mar o climatolog\u00EDa"; } else if (content.motivo_bandera == "2") { motivo = "Condiciones del agua"; } else if (content.motivo_bandera == "3") { motivo = "Decisi\u00F3n de las autoridades"; } if (content.estado == "A") { accesoPlaya = "Abierto"; } else if (content.estado == "C") { accesoPlaya = "Cerrado"; } if (content.medusas == "S") { medusas = "S\u00ED"; } else { medusas = "No"; } if (content.ayuda_bano == "S") { ayuda_bano = "S\u00ED"; } else { ayuda_bano = "No"; } var contenido = '
' + '' + '' + '

' + '' + '' + 'Playa ' + content.nombre + '' + '
' + 'Bandera: ' + estado + '

'; if (motivo != "") { contenido += 'Motivo: ' + motivo + '
'; } contenido += 'Acceso a la playa: ' + accesoPlaya + '
' + 'Medusas: ' + medusas + '
' + 'Ayuda ba\u00F1o: ' + ayuda_bano + '
' + 'Ir a la ficha de la playa
' + '
'+ '
'; var markerLatLng = marker.getPosition(); infoWindow.setContent(contenido); infoWindow.open(map, marker); $('.capaContInfoPlaya').tooltip(); } function setPositionCapaLogo() { /*var capaLogo = $('#capaLogo'); var capaLogoH = capaLogo.height(); var capaLogoW = capaLogo.width(); var heightW = $(window).height(); var widthW = $(window).width(); capaLogo.css({top: (heightW - (heightW * 0.1) - capaLogoH), left: (widthW - (widthW * 0.1) - capaLogoW)});*/ } function setPositionCapaCombos() { /*var capaCombos = $('#divSel'); var capaLogoH = capaCombos.height(); var capaLogoW = capaCombos.width(); var heightW = $(window).height(); var widthW = $(window).width(); capaCombos.css({top: (heightW - (heightW * 0.1) - capaLogoH), left: (widthW - (widthW * 0.1) - capaLogoW)});*/ } /** Funcionalidad de los combos **/ /** * Se encarga de cargar los combos con los datos necesarios */ function cargaCombosInicio() { // aplicamos los eventos $('#selIniAuton').change(cambiaAutonomia); // busqueda de playa $('#btn_Inicio').click(validaSeleccionInicio); $.ajax({ beforeSend: function(){ $('#img_waiting').dialog('open'); }, contentType: "application/x-www-form-urlencoded;charset=UTF-8", complete: function () { $('#img_waiting').dialog('close'); }, data: { codAuton: $("#autonomia").val() }, dataType: "json", success: function(json) { if (json.resultado != "success") { setAvisosDialogText(json.mensaje); $('#avisos_dialog').dialog('open'); } else { var carga = json.carga; // la carga va a determinar que tenemos que cargar if (carga == "autonomia") { // viene informacion de autonomias cargaCombosAutonomia(json, true); } else if (carga == "provincia") { // viene informacion de provincias cargaCombosProvincia(json, true); } else { // NO DEBE entrar por aqui, pero lo evaluamos por si acaso setAvisosDialogText("Se ha producido un error al realizar la carga de la informaci\u00F3n de los desplegables"); $('#avisos_dialog').dialog('open'); } } }, type: "POST", url: "admCombos.do" }); } /** * Carga el combo de autonomias con lo que venga en el json * * @param json * @param inicio */ function cargaCombosAutonomia(json, inicio) { var jQselObj = $('#selIniAuton'); var jsonArr = json.autonomias; // lo primero es vaciar el select jQselObj.html(''); // le seteamos una primera opcion var opt = $('