var dataRutas =[]; var rutas= []; var markersArray_PDR = []; var markersArray_PUNTOS = []; var markersArray_RUTAS = []; var infow_share; var qq; var dataLayers =[]; var lang = 'es'; function gestionRuta(){ var self = this; self.ruta; self.id; self.directionsService; self.directionsDisplay; self.map; self.puntos = []; self.markers = []; self.origen; self.destino; self.bounds; self.pintada; self.color; self.rutamarcada; self.rutamarcadaPoints; self.lineaResaltada; self.share=false; self.inicializar = function(id){ self.ruta = {}; $.ajax({ url: './objectoRuta?idRuta='+id, type: 'GET', async:false, contentType: 'application/json; charset=UTF-8', success: function (response) { self.ruta=JSON.parse(response); self.id = self.ruta.id; self.puntos=self.ruta.puntoRuta; self.origen =self.ruta.puntoRuta[0].location; self.destino=self.ruta.puntoRuta[self.ruta.puntoRuta.length-1].location; self.pintada=false; self.color= self.ruta.color; for (var i = 0; i < self.ruta.markers.length; i++) { if(self.ruta.markers[i].idCapa == 21){ var icon = { url: "./images/markers/icon_municipioGarveland.png" }; monumento = new MarkerWithLabel({ id: self.ruta.markers[i].id, position: new google.maps.LatLng(self.ruta.markers[i].position.lat, self.ruta.markers[i].position.lng), icon: icon, labelContent: self.ruta.markers[i].nombre_es, labelClass: "labels", labelInBackground: false }); }else{ var icon = { url: './images/markers/'+self.ruta.markers[i].markerImg, scaledSize: new google.maps.Size(40, 40) }; monumento = new google.maps.Marker({ id: self.ruta.markers[i].id, position: new google.maps.LatLng(self.ruta.markers[i].position.lat, self.ruta.markers[i].position.lng), icon: icon }); } monumento.metadata = {id_ptRuta: self.ruta.markers[i].id}; markersArray_RUTAS.push(monumento); monumento.addListener('click', function() { if(infow_share){ infow_share.close();} if( infoWindow ) { infoWindow.close(); } marcador= this; $.ajax({ url: './infoMarkerCapa?id='+this.id , type: 'GET', contentType: 'application/json; charset=UTF-8', success: function (respon) { infoWindow.setContent(createInfoMarkerRuta(respon)); infoWindow.idRuta= null; infoWindow.open(map,marcador); $("#ctr_p_"+respon.id).click(function(){ $("#i_ctr_pt_id").val(respon.id); $("#i_ctr_tipo").val('2'); $("#modal_add_ctr").modal(); }); $("#comments-pt-"+respon.id).click(function(){ openModalComments(respon.id,2); }); }, error: function (resp) { alert('Ha ocurrido un error en el servidor al enviar la petición ajax'); } }); }); self.markers.push(monumento); } }, error: function (resp) { alert('Ha ocurrido un error en el servidor al enviar la petición ajax'); } }); self.directionsService = new google.maps.DirectionsService; self.directionsDisplay = new google.maps.DirectionsRenderer({ preserveViewport: true, suppressMarkers: true, polylineOptions: { strokeColor: self.color } }); } self.setMap = function(map) { self.map = map; self.rutamarcada.setMap(map); for (var i = 0; i < self.markers.length; i++) { self.markers[i].setMap(map); } } self.renderizar = function(mostrarPopupRuta) { self.map = map; self.directionsService.route({ travelMode: 'DRIVING', origin: self.origen, destination: self.destino, waypoints: self.puntos, },function(response, status) { if (status === 'OK') { self.bounds = response.routes[0].bounds; self.pintada=true; var pasosDeRuta = response.routes[0].legs; self.rutamarcadaPoints = []; for (var i = 0; i < pasosDeRuta.length; i++) { pasos = pasosDeRuta[i].steps; for (var j = 0; j < pasos.length; j++) { for (var z = 0; z < pasos[j].lat_lngs.length; z++) { self.rutamarcadaPoints.push(pasos[j].lat_lngs[z]); } } } self.rutamarcada = new google.maps.Polyline({ path: self.rutamarcadaPoints, geodesic: true, strokeColor: self.color, strokeOpacity: 1, strokeWeight: 5 }); self.rutamarcada.setMap(map); for (var i = 0; i < self.markers.length; i++) { self.markers[i].setMap(map); } self.pintada=true; google.maps.event.addListener(self.rutamarcada, 'click', function(event){ }); google.maps.event.addListener(self.rutamarcada, 'mouseover', function(event){ self.lineaResaltada = new google.maps.Polyline({ path: self.rutamarcadaPoints, strokeColor: '#'+self.color, strokeOpacity: 0.25, strokeWeight: 10, Clickability:false }); self.lineaResaltada.setMap(map); }); google.maps.event.addListener(self.rutamarcada, 'mouseout', function(event){ self.lineaResaltada.setMap(null); self.lineaResaltada =null; }); google.maps.event.addListener(self.rutamarcada, 'click', function(event){ if(infoWindow) { infoWindow.close(); } infoWindow.setContent(createInfoRuta(self.ruta)); infoWindow.setPosition((event==undefined)?rutas[0].rutamarcadaPoints[parseInt(rutas[0].rutamarcadaPoints.length/2)]:event.latLng); infoWindow.idRuta = self.id; infoWindow.open(map); $(document).on("click", "#comments-ruta-"+self.id, function(event){ openModalComments(self.id,3); }); $(document).on("click", "#ctr_ruta_" + self.id, function(event){ $("#i_ctr_pt_id").val(self.id); $("#i_ctr_tipo").val('3'); $("#modal_add_ctr").modal(); }); }); } else { window.alert('API Direction Google ha fallado. Razón: ' + status); } if(self.share){ google.maps.event.trigger(self.rutamarcada, 'click'); } }); } self.ocultar = function() { self.setMap(null); self.pintada=false; if( infoWindow && infoWindow.idRuta != null ) { infoWindow.close();infoWindow.idRuta = null; } } self.mostrar = function() { self.setMap(map); self.pintada=true; if( infoWindow && infoWindow.idRuta != null ) { infoWindow.close();} } self.alternar = function() { if(self.map != null){ self.ocultar(); }else{ self.mostrar(); } } self.check = function(check) { if(check){ self.mostrar(); }else{ self.ocultar(); } } self.centrar = function(){ if(self.pintada){ map.fitBounds(self.bounds); map.setCenter(self.bounds.getCenter()); } } } function obtenerRutas(){ $('#rutas-verdes :checkbox:checked').each(function(){ var ruta = new gestionRuta(); ruta.inicializar(parseInt($(this).attr('value'))); ruta.renderizar(); rutas.push(ruta); }); rutasTotales = [] $('#rutas-verdes :checkbox').each(function(){ rutasTotales.push($(this).attr('value')); dataRuta = new Object(); dataRuta.idRuta = parseInt($(this).attr('value')); dataRutas.push(dataRuta); }); } function deletePt(idCapa,respon){ var dataL = {}; $.ajax({ url : './deletePunto/'+respon.id, type : 'POST', contentType : 'application/json; charset=UTF-8', beforeSend: function() { $(".loading").show(); }, success : function(response) { if (response.code == 0) { markersArray_PUNTOS.forEach(function(m,i) { if (m.metadata.id_punto == response.data) { m.setMap(null); markersArray_PUNTOS.splice(i,1); } }); markersArray_RUTAS.forEach(function(m,i) { if (m.metadata.id_ptRuta == respon.id) { m.setMap(null); markersArray_RUTAS.splice(i,1); } }); dataLayers.forEach(function(dl,i){ if(dl.idCapa == idCapa){ dataL = dl; } }); if(dataL != null){ dataL.markerList.forEach(function(m,im) { if(m.metadata.id_punto == response.data){ m.setMap(null); dataL.markerList.splice(im,1); } }); } if(rutas.length > 0){ for(var i = 0; i