var globalFunctions = { openedInfoWindow : null, allResults : {}, numRows: 500, fitxaMapa: "fitxaMapaPlaUrbanistic", fitxaTemplate: "templates.plaUrbanistic", customIconsMapTemplate : "", url: "//opendata.amb.cat:443/api/pla_urbanistic_pro", start: 0, icon : "/css/img/ico_gmaps.png", bounds : null, /* * Renders data in a google maps, and returns an array of markers */ renderData : function (data,map, useBounds) { if(!data) return; //Mirem si té una template personalitzada per mostrar les icones dins el mapa if(this.customIconsMapTemplate) { this.customIconsMapTemplate = eval(templates[""]()); } var openedInfoWindow = null; results = data.items; total = data.count; globalFunctions.start = data.start; /* * Total rendered over tag totals */ var totals= document.getElementById("totals"); var tmplTotals = templates.totals(data); totals.innerHTML=tmplTotals; var resultats =document.getElementById("resultats"); var resultMerged = templates.resultatsPlaUrbanistic(data); resultats.innerHTML= resultMerged; //Per poder executar el javascript que hi ha en les templates de resultats for(var script_ in resultats.getElementsByTagName("script")){ eval(resultats.getElementsByTagName("script")[script_].innerHTML); } var _markers = []; var z; this.bounds = new google.maps.LatLngBounds(); $("#searchResults").on("click", ".vcard .fn .url", function(e) { GBox.open($(e.target).attr("id").replace("resultat","")); }); $(".gbox .closegbox").on("click", function(e) { GBox.close(e);}); var geolocationFields = "geolocalitzacio"; for(var i=0,z=total; i 0) { var singleResult = JSON.parse(JSON.stringify(results[i])); this.getGeosearchInArrays(folders_geo, 0, results[i], results[i], _markers, map, useBounds, singleResult); } } if (useBounds) map.fitBounds(this.bounds); } /* * Returning array of markers */ return _markers }, paintMarker: function(_titol,_latlng, _resultId,_map,htmlFitxa,icon_marker_) { var marker = new google.maps.Marker({ position: _latlng, icon : icon_marker_, map: _map, title : _titol }); var inf=[]; inf = "
" + htmlFitxa; if("plaUrbanistic" != "false") { inf += "

Més informació

"; } var infowindow = new google.maps.InfoWindow({ content : inf }); var aux = _resultId; google.maps.event.addListener(marker, 'click', function() { //Si hi ha una bombolla oberta la tanquem if (globalFunctions.openedInfoWindow != null) { globalFunctions.openedInfoWindow.close(); $("#searchResults ul li").removeAttr("style"); } globalFunctions.openedInfoWindow = infowindow; _map.setCenter(marker.getPosition()); infowindow.open(_map,marker); _map.setZoom(17); $("#li_"+aux).css('background-color','#bfb9bb'); var pag = window.location; pag.hash=""; //window.location=""+pag.href.replace("#","")+"#li_"+aux; //console.log(pag+"#li_"+aux); }); google.maps.event.addListener(infowindow, 'closeclick', function() { $("#li_"+aux).css('background-color','#FFFFFF'); }); /* * Per poder executar javascript dins dels infowindows s'ha de capturar l'element "script" del seu html i executar-lo * un cop estigui carregat. Aixo ho fem mitjançant el listener "domready". */ google.maps.event.addListener(infowindow,'domready',function(){ var dummyElement = $($("
").html(infowindow.content)).find("script"); if(dummyElement && dummyElement.length > 0){ //Executem l'script var _script = dummyElement[0].innerHTML; try { eval(_script); } catch(e){ alert(e); } } }); return marker; }, viewMap: function(index, target) { //Si hi ha una bombolla oberta la tanquem //if(this.allResults[index].geolocalitzacio && this.allResults[index].geolocalitzacio.length>1){ var lat=target.attributes["data-lat"].value; var lng=target.attributes["data-lon"].value; if(!this.isInCircle(lat,lng)){ this.allResults[index].marker[lat+"_"+lng].setVisible(true); } console.log("****** "+index+" || "+lat+" "+lng); google.maps.event.trigger(this.allResults[index].marker[lat+"_"+lng], 'click'); //} else { //google.maps.event.trigger(this.allResults[index].marker, 'click'); //} //updateUrl(); }, /*renderAdvancedSearch: function(objName){ var obj= document.getElementById(objName); var avancada = templates.({}); obj.innerHTML=avancada; },*/ renderHighlights: function(objId) { var obj = document.getElementById(objId); //Si la plantilla de destacats no esta configurada pintem l'html per defecte if(obj && "destacatsGeneric") { var tmpl = eval("templates.destacatsGeneric({})"); obj.innerHTML = tmpl; } }, isInCircle : function(pointLat, pointLng){ if(labDT.circle){ var centerLat = labDT.circle.getCenter().lat(); var centerLng = labDT.circle.getCenter().lng(); var maxDist = labDT.circle.radius; var latlngCenter = new google.maps.LatLng(centerLat,centerLng); var latlngPoint = new google.maps.LatLng(pointLat,pointLng); var Dist = google.maps.geometry.spherical.computeDistanceBetween(latlngCenter, latlngPoint); return (Dist