//Inizializzazione mappa principale var lastmaptouched = 0 caricaLayer(layersList,false); caricaLayer(layersList2,false); caricaLayer(layersOverview,true); caricaLayer(layersOverview2,true); var mappe = [[null,null,null],[null,null,null]] var mapHtml = [['map','mapOvw1','mapLeg1'],['map3','mapOvw2','mapLeg2']] var zscale = { 20: 500, 19: 1000, 18: 2000, 17: 5000, 16: 10000, 15: 20000, 14: 40000, 13: 80000, 12: 160000, 11: 320000, 10: 640000 }; mappe[0][0] = new ol.Map({ controls: [new ol.control.Attribution(), new ol.control.ScaleLine()], interactions: ol.interaction.defaults({ doubleClickZoom :false }), target: document.getElementById(mapHtml[0][0]), renderer: 'canvas', layers: layersList, view: new ol.View({ maxZoom: RealGlobMaxZoom, minZoom: GlobMinZoom }) }); if (startcenter != undefined) { mappe[0][0].getView().setCenter(startcenter); } else { mappe[0][0].getView().fit(startextent, mappe[0][0].getSize()); } if (startzoom != undefined) { mappe[0][0].getView().setZoom(startzoom) } else { mappe[0][0].getView().setZoom(GlobMaxZoom-1) } mappe[1][0] = new ol.Map({ controls: [new ol.control.Attribution(), new ol.control.ScaleLine()], interactions: ol.interaction.defaults({ doubleClickZoom :false }), interactions: ol.interaction.defaults({ doubleClickZoom :false }), target: document.getElementById(mapHtml[1][0]), renderer: 'canvas', layers: layersList2, view: mappe[0][0].getView() }); mappe[0][1] = new ol.Map({ controls: [], interactions: [], target: document.getElementById(mapHtml[0][1]), renderer: 'canvas', layers: layersOverview, view: new ol.View() }); mappe[0][1].getView().fit(ovwextent,mappe[0][1].getSize()); mappe[1][1] = new ol.Map({ controls: [], interactions: [], target: document.getElementById(mapHtml[1][1]), renderer: 'canvas', layers: layersOverview2, view: mappe[0][1].getView() }); mappe[0][2]=caricaStaticImage(mapHtml[0][2]) mappe[1][2]=caricaStaticImage(mapHtml[1][2]) //Caricamento legenda (carica list group "layover" e "laybase") if (!isNaN(visMappa1)) {visMappa1=LayerBase[LayerBase.length-visMappa1][0]} if (!isNaN(visMappa2)) {visMappa2=LayerBase[LayerBase.length-visMappa2][0]} var PrimoBase = [ layerByName(visMappa1,mappe[0][0],false).get('title'), layerByName(visMappa2,mappe[1][0],false).get('title') ] function fancyCheckBox(inp, state, addClass, spnclass, noactive) { var labsp = document.createElement('label'); //definisce label e span per checkbox grafico labsp.htmlFor = inp.id; labsp.id=inp.id+'fancy' var spn1 = document.createElement('span'); spn1.className="btn-xs btn-" + state + (noactive ? '' : ' active') + " "+spnclass+'1'; var spn2 = document.createElement('span'); spn2.className="btn-xs btn-default" + (noactive ? '' : ' active') + " " +spnclass+'2'; labsp.appendChild(spn1); labsp.appendChild(spn2); labsp.className+=addClass return labsp } function compilaLeg(mappa,pref) { for (var i=mappa.getLayers().getLength()-1;i>-1;i--) { var lay = mappa.getLayers().getArray()[i]; //legge layer if (lay.get('baserif') == '' && lay.get('title').indexOf('-grigio')==-1 ) { var litem = document.createElement('div'); //crea list item litem.className = 'list-group-item'; var input1 = document.createElement('input'); //crea input input1.id = pref + lay.get('title'); input1.checked = lay.get('visible'); input1.onchange = function(e) { setVisible_(e.target.id,e.target.checked); }; if (lay.get('type') === 'base'){ var panli=document.getElementById('laybase'+pref); var grupEl = document.getElementById(pref+'gruppo' + String(lay.get('gruppo').replace(/\s/g,''))) if (!grupEl) { //Crea nuovo gruppo per accordion grdivpan = document.createElement('div'); grdivpan.className = 'panel panel-accordion'; grupEl = document.createElement('div') grupEl.id = pref+'gruppo' + String(lay.get('gruppo')).replace(/\s/g,'') grupEl.className = 'list-group-item list-group-item-info btnico btn-tog'+ (layerByName(PrimoBase[parseInt(pref)-1],mappe[parseInt(pref)-1][0],false).get('gruppo')==lay.get('gruppo') ? '' :' collapsed') grupEl.dataset.parent="#laybase"+pref; grupEl.dataset.toggle='collapse'; grupEl.dataset.target= "#"+grupEl.id+'_coll'; grupEl.appendChild(document.createTextNode(lay.get('gruppo'))) li = document.createElement('div'); li.id=grupEl.id+'_coll' li.className = 'collapse'+(layerByName(PrimoBase[parseInt(pref)-1],mappe[parseInt(pref)-1][0],false).get('gruppo')==lay.get('gruppo') ? ' in' :''); panli.appendChild(grupEl) panli.appendChild(grdivpan) grdivpan.appendChild(li) } var togg = document.createElement('div'); if (contaBaseRif(mappa,lay)>0) { togg.id=pref + lay.get('title')+"_tog" togg.className="btnico btn-tog pull-right collapsed" togg.dataset.toggle='collapse' togg.dataset.target='#'+pref + lay.get('title')+'_gr' litem.appendChild(togg); } input1.type = 'radio'; input1.name = 'base'+pref; if(layerByName(lay.get('title'),mappa,true)!==false){ var inpGr = document.createElement('input'); //crea input inpGr.id = pref + lay.get('title') + '-grigio'; inpGr.type = 'checkbox'; inpGr.onchange = function(e) { setVisible_(e.target.id.replace('-grigio',''),document.getElementById(e.target.id.replace('-grigio','')).checked); }; inpGr.checked = false; } } else { var cnv=document.createElement('canvas') cnv.height=20 cnv.width=25 cnv.style="margin: 2px" cnv.className="btn-xs pull-right" cnv.id= input1.id + 'canvas' $(cnv).attr('data-original-title','clicca per modificare grafia '+lay.get('name')) $(cnv).attr('data-placement','right') $(cnv).tooltip({container:'body'}); cnv.onclick = function(e) { if (document.getElementById('styleModal')!=null) { $.when($('#styleModal').remove()).then(function() { var m = creaModalStyle(e.target.id) $(m).modal('show') }) } else { var m = creaModalStyle(e.target.id) $(m).modal('show') } }; litem.appendChild(cnv) var li=document.getElementById('layover'+pref); input1.type = 'checkbox'; } var lab = document.createElement('label'); //titolo layer lab.className="btn-xs btn-default"; lab.setAttribute('for',input1.id) var label = document.createTextNode(lay.get('name')); lab.appendChild(label); litem.appendChild(input1); //appende elementi a list item e poi a list group litem.appendChild(fancyCheckBox(input1,"default","",(input1.type=="checkbox" ? "btnico facheck" : "btnico faradio"),(input1.type=="checkbox" ? false : true))); if (lay.get('type') === 'base' && layerByName(lay.get('title'),mappa,true)!==false){ litem.appendChild(inpGr); //appende elementi a list item e poi a list group litem.appendChild(fancyCheckBox(inpGr,"warning","","btnico fabn")); } litem.appendChild(lab); li.appendChild(litem); //SE LAYER VETTORIALE E' VISIBILE CARICA STILE CANVAS if (lay.get('type') != 'base' && lay.getVisible()) { layerCaricato(lay,cnv.id) } else { $(cnv).hide() } //Ciclo su layer alla ricerca di vettoriali attivi per layer base if (lay.get('type') === 'base'){ var gruppobaserif = document.createElement('div') gruppobaserif.id=pref + lay.get('title')+'_gr' gruppobaserif.className='collapse' var brif=0; for (var j=mappa.getLayers().getLength()-1;j>-1;j--) { var layb = mappa.getLayers().getArray()[j]; //legge layer if (layb.get('baserif')== lay.get('title') && layb.get('baserif')+ lay.get('dominio') != layb.get('title')) { brif += 1 var baseitem=document.createElement('div') baseitem.className='list-group-item' var baselab=document.createElement('label') baselab.className='btn-xs btn-default' var basetext= document.createTextNode(layb.get('name')) baselab.appendChild(basetext) var input3 = document.createElement('input'); //crea input input3.id = pref + layb.get('title'); input3.checked = layb.get('visible'); input3.type = 'checkbox'; input3.onchange = function(e) { setVisible_(e.target.id,e.target.checked); }; baseitem.appendChild(input3); //appende elementi a list item e poi a list group baseitem.appendChild(fancyCheckBox(input3,"warning","pull-right","btnico fainfo")); baselab.setAttribute('for',input3.id) baseitem.appendChild(baselab) gruppobaserif.appendChild(baseitem) } } if (brif>0) { li.appendChild(gruppobaserif) } } } } //Controlla se ci sono documenti pdf var DocCurr = '' for (p=0;p-1;j--) { var layb = mappa.getLayers().getArray()[j]; //legge layer if (layb.get('baserif')== layer.get('title') && layb.get('baserif')+layer.get('dominio')!= layb.get('title')) { ris +=1 } } return ris } for (m=0;m mz) { var ext ext=mappe[0][0].getView().calculateExtent(mappe[0][0].getSize()) var riqExZoom = new ol.Feature({ geometry: new ol.geom.Polygon([[[ext[0],ext[1]],[ext[2],ext[1]],[ext[2],ext[3]],[ext[0],ext[3]],[ext[0],ext[1]]]]) }); var vectorRiq = new ol.layer.Vector({ title: 'RiquadroZoom', baserif: '', source: new ol.source.Vector({ features: [riqExZoom] }), style: new ol.style.Style({ stroke: new ol.style.Stroke({ color: 'rgba(255, 0, 0, 0.5)', width: 3 }), }) }); for (m=0;m 20 ? 20 : z) var z2=z if ($("#"+mapHtml[1][0]).is(":visible")) { z2 = mappe[1][0].getView().getZoom() z2 = z2 < 10 ? 10 : (z2 > 20 ? 20 : z2) } document.getElementById("scalapdf").innerHTML='1:'+zscale[z] + (z!=z2 ? '/1:'+zscale[z2] : '') var z=Math.max(mappe[0][0].getView().getZoom(),mappe[1][0].getView().getZoom()) if (z>GlobMaxZoom){ $("#extrazoom").removeClass ('btn-disabled') } else { $("#extrazoom").addClass ('btn-disabled') } if (z==RealGlobMaxZoom) { $("#zoomin").removeClass ('btn-warning') $("#zoomin").addClass ('btn-disabled') } else { $("#zoomin").removeClass ('btn-disabled') $("#zoomin").addClass ('btn-warning') } if (z==GlobMinZoom) { $("#zoomout").removeClass ('btn-warning') $("#zoomout").addClass ('btn-disabled') } else { $("#zoomout").removeClass ('btn-disabled') $("#zoomout").addClass ('btn-warning') } } mappe[0][0].on('moveend',function() { lastmaptouched = 0 ControllaZoom() }) mappe[1][0].on('moveend',function() { lastmaptouched = 1 ControllaZoom() }) //FUNZIONI //Imposta visibilità layer (funzione attivata da checkbox/radio) function setVisible_(maplayer,value) { var mapid=parseInt(maplayer.slice(0,1))-1 targetmap = mappe[mapid][0]; layer=maplayer.slice(1); inp=document.getElementById(maplayer + '-grigio') var grigio = (inp !== null ? inp.checked : false) var lay = layerByName(layer,targetmap,grigio) var layOvw if (!value && lay.get('type') != 'base' && lay.get('baserif') == '') { var cnv=document.getElementById(maplayer + 'canvas') if (cnv != null) { $(cnv).hide() } } if (value && lay.get('type') != 'base') { layerCaricato(lay,maplayer + 'canvas') } lay.setVisible(value) if (value && lay.get('type') === 'base') { AggiornaLegRast(targetmap,lay.get("title").replace("-grigio","")) GlobMaxZoom = maxZoomCorrente() layOvw = layerByName(lay.get('title'),mappe[mapid][1],false) layOvw.setVisible(true) // Hide all other base layers regardless of grouping $("#" + maplayer.slice(0,1) + lay.get("title").replace("-grigio","")+"_tog").show() $("#" + maplayer.slice(0,1) + lay.get("title")+"-grigiofancy").show() for (var i=0;icoordinates.length-1-2) { output += "ultimo segmento: " + l + ' ' + 'm
'; } length += l; } if (isdrwng==true) { output += 'lunghezza totale: ' + Math.round(length*10)/10 + ' ' + 'm'; } else { if (geom instanceof ol.geom.Polygon) { output = 'perimetro: ' + Math.round(length*10)/10 + ' ' + 'm'; } else { output = 'lunghezza: ' + Math.round(length*10)/10 + ' ' + 'm'; } } return output; }; function turfArea(geom) { var f=new ol.format.GeoJSON() var g = f.writeGeometryObject(geom,{featureProjection: 'EPSG:3857'}) var output=Math.round(turf.area(g)) return output; }; function turfLength(geom) { var f=new ol.format.GeoJSON() var g = f.writeGeometryObject(geom,{featureProjection: 'EPSG:3857'}) var line = { "type": "Feature", "properties": {}, "geometry": g }; var output=Math.round(turf.lineDistance(line)*1000) return output; }; // Format area output. @param {ol.geom.Polygon} polygon The polygon. @return {string} Formatted area. function formatArea(polygon) { var area; var sourceProj = mappe[0][0].getView().getProjection(); var geom = /** @type {ol.geom.Polygon} */(polygon.clone().transform(sourceProj, 'EPSG:4326')); var coordinates = geom.getLinearRing(0).getCoordinates(); if (coordinates.length<3) { return ""; } area = Math.abs(wgs84Sphere.geodesicArea(coordinates)); var output; output = "area: " + Math.round(area*10 )/10 + ' ' + 'm2
'; return output; }; function KeyCheck(event) { if (curMapTool=='selFeat') { return } var KeyID = event.keyCode; switch(KeyID) { case 27: //ESC pulisci(true); $("#dropInsert,#dropMeas").addClass("btn-default").removeClass("btn-warning"); $('#infoMeas'+(curMapTool.indexOf("mis")==0 ? '' : 'Ins')).addClass('hidden') $("#drop"+(curMapTool.indexOf("mis")==0 ? 'Meas' : 'Insert')).removeClass("noroundright") curMapTool='selFeat'; break; case 46: //CANC draw.removeLastPoint(); draw2.removeLastPoint(); break; default: break; } } function modifyFeat(feat) { $(selTooltipElement[0][0]).addClass('hidden') $(selTooltipElement[1][0]).addClass('hidden') var curFeatModif = feat.clone() SelFeat(curFeatModif) modif = new ol.interaction.Modify({ features: new ol.Collection([curFeatModif]), }); modifListener=modif.on('modifyend', function(evt) { curGeoReadWrite=evt.features.getArray()[0].getGeometry(); }); mappe[0][0].addInteraction(modif); if ($("#map3").is(":visible")) { modif2 = new ol.interaction.Modify({ features: new ol.Collection([curFeatModif]), }); modifListener2=modif2.on('modifyend', function(evt) { curGeoReadWrite=evt.features.getArray()[0].getGeometry(); }); mappe[1][0].addInteraction(modif2); } } function pulisciModifGeo() { mappe[0][0].removeInteraction(modif) mappe[1][0].removeInteraction(modif2) ol.Observable.unByKey(modifListener) ol.Observable.unByKey(modifListener2) DeSelect() curModifGeo=false } $("#testdrag3").on("click",function(e) { if (curModifGeo) { e.stopPropagation() return; } }); var measuring =false function drawFeat(TipoGeo,Operazione) { if (Operazione!="misura") {DeSelect()}; $('#infoMeas,#infoMeasIns').addClass('hidden') $("#drop"+(curMapTool.indexOf("mis")==0 ? 'Meas' : 'Insert')).removeClass("noroundright") if (TipoGeo != "Point") { $('#infoMeas'+(curMapTool.indexOf("mis")==0 ? '' : 'Ins')).removeClass('hidden') $("#drop"+(curMapTool.indexOf("mis")==0 ? 'Meas' : 'Insert')).addClass("noroundright") infomeas=$('#infoMeas'+(curMapTool.indexOf("mis")==0 ? '' : 'Ins')).hasClass('btn-warning') } document.addEventListener("keydown", KeyCheck); //or however you are calling your method pulisci(true); measuring=true var type = TipoGeo; var source = new ol.source.Vector(); vector = new ol.layer.Vector({ title: "disegno", source: source, style: [ creaStile('rgb(255,255,255)',6, 'rgba(255, 255,255,0)'), creaStile('rgb(255,0,0)',4, 'rgba(255, 0, 0, 0.4)') ] }); for (m=0;m-1) { curLayReadWrite=nomelayrw; return true; } else { return false; } } } } function AggiornaTrovate(LayRW,ID,feat){ if (layRic==undefined) {return} var ArrLayRW = TrovaInArray(LayerAttivi,1,LayRW) if (LayerCollegatoDiRWspec(layRic[0],LayRW)) { for (t=0;tOGGETTO ELIMINATO" }); } } } } ReadFeatsDB() FeatSelCur.splice(selID,1) //visualizzaOggettiSel() DeSelect() console.log('Success: ' + status + "(" + data + ")") }, error: function (jqXHR, status, errorThrown) { //if fail console.log('Errore: ' + status) } }) } function InsertFeatDB(crit,ID,LayRW){ if ($('#insModal')) {$('#insModal').modal('hide')} document.getElementById("divLoadingText").innerHTML='Aggiornamento database...' $("#divLoading").addClass('show') if (LayRW==undefined){LayRW=curLayReadWrite} var ArrLayRW = TrovaInArray(LayerAttivi,1,LayRW) var GJ = new ol.format.GeoJSON() var postcrit="" if (crit!=undefined) { for (i=0;i0) { mappa.forEachFeatureAtPixel(pixel, function(feature, layer) { //ORDINA OGGETTI PER TIPOLOGIA GEOMETRICA E PER SUPERFICIE if (layer.getSource() instanceof ol.source.VectorTile || layer.get('selatpixel')==true) { if (layer.get('baserif')+LayerBaseCorrente(mappa).get('dominio')!=layer.get('title')) { if (layer.get('phpgeo')==undefined) { FeatSelCur[FeatSelCur.length]=[feature,layer.get('title'),layer.get('name')] } else { var doppio=false for(v=0;v -1) { var postphp = "?frameid=" + divgr.id+"_iframe" for (var p=0; p -1) { var datotxt=document.createElement("div"); datotxt.id= divgr.id+"_dynphp" $(datotxt).load(stringadato.replace('.-ajax','')+postphp,function() {$("#divLoading").removeClass('show')}) } else { var datotxt=document.createElement("iframe"); datotxt.id= divgr.id+"_iframe" datotxt.src= stringadato+postphp datotxt.height = 5 if (ris>1) { datotxt.style.display="none" } else { datotxt.style.display="block" } //datotxt.style = "border:0; marginWidth:0; marginHeight:0" } datolab.style = "padding:0 0 0 0" datolab.colSpan=2 document.getElementById("divLoadingText").innerHTML='Caricamento dati...' $("#divLoading").addClass('show') datolab.appendChild(datotxt) riga.appendChild(datolab); //SE E' UN IMMAGINE (.jpg, .png) } else if (stringadato.indexOf('.jpg') > -1 || stringadato.indexOf('.png') > -1) { $(riga).append($("")); } else { //SE E' UN ALTRO FILE var campotxt = document.createTextNode(currentFeatureKeys[i]); var campolab = document.createElement('td') campolab.className="h6"; campolab.appendChild(campotxt); //TESTO DATO CAMPO var datolink = document.createElement('a') var datolab = document.createElement('td') var dwnlico = document.createElement('span') if (stringadato.slice(stringadato.length-4)==".pdf") { dwnlico.className = "btn-xs-primary btnico btnpdf" var datotxt=document.createTextNode(' scarica il documento pdf' ); } else { dwnlico.className = "btn-xs-primary btnico btndwnl" var datotxt=document.createTextNode(' scarica il documento' ); } datolink.href=stringadato datolink.target="_blank" datolink.appendChild(dwnlico) var bld = document.createElement('i') bld.appendChild(datotxt) datolink.appendChild(bld) datolab.className="h5 text-info"; datolab.appendChild(datolink) riga.appendChild(campolab); riga.appendChild(datolab); } } else { if (currentFeatureKeys[i]=="workhtml") { $(riga).append($("").append(stringadato)); } else { $(riga).append(""+currentFeatureKeys[i]+""); $(riga).append(""+stringadato+""); } } tbody.appendChild(riga); } } //MISURE AUTOCALCOLATE /*var curgeo=currentFeature.getGeometry() var curtype=curgeo.getType() var misure="" if (curtype.indexOf("Polygon") > -1 || curtype.indexOf("LineString") > -1) { numrighe++ if (curtype.indexOf("Polygon") > -1) { misure = "area: " + turfArea(curgeo).toLocaleString('de-DE').replace(/\./g,' ')+ ' m2 - perimetro: ' + turfLength(curgeo).toLocaleString('de-DE').replace(/\./g,' ') + ' m' } else { misure = 'lunghezza: ' + turfLength(curgeo).toLocaleString('de-DE').replace(/\./g,' ') + ' m' } var rigaauto=document.createElement('tr') $(rigaauto).append($("").append('misure calcolate automaticamente
'+misure)); tbody.appendChild(rigaauto); } //***************** */ if (numrighe>0) { tabella.appendChild(tbody) divgr.appendChild(tabella) } else { divlist.innerHTML+=" (nessun dato associato)" divlist.className=divlist.className.replace(" btn-tog"," btn-hidetog") } divpan = document.createElement('div'); divpan.className = 'panel panel-accordion'; divpan.appendChild(divgr); res.appendChild(divpan); }; $("#contaSel").html("Risultati interrogazione (" + ris + ")"); if (ris>0) { $('#sidBar2').show() $('#result').collapse("show") $('#result').show() if($('#testdrag3').css("z-index")<252) {$('#testdrag3').css("z-index","252")} //$('#'+FeatSelCur[0][1]+'sel__1').collapse("show") //$('#featlist__0').click() } else { DeSelect() } }; var LayRastCorner //Crea mappa e carica immagine statica (es:legenda tavola raster) function caricaStaticImage(htmlEl) { var maxX=0 var maxY=0 var layRast = [] for (i=0;iLayerBase[i][9][0] ? maxX : LayerBase[i][9][0] maxY= maxY >LayerBase[i][9][1] ? maxY : LayerBase[i][9][1] } } LayRastCorner = [0,maxY] var pixelProjection = new ol.proj.Projection({ code: 'pixel', units: 'pixels', extent: [0, 0, maxX, maxY] }); for (i=LayerBase.length-1;i>-1;i--) { if (LayerBase[i][9]!=undefined) { layRast[layRast.length] = new ol.layer.Image({ title: 'rast'+LayerBase[i][0], type: 'base', source: new ol.source.ImageStatic({ url: (dircom == undefined ? '.' : '../'+ dircom) + '/layers/' + LayerBase[i][0] + '/' + LayerBase[i][0] + '.png', imageSize: [LayerBase[i][9][0], LayerBase[i][9][1]], projection: pixelProjection, imageExtent: [0,maxY-LayerBase[i][9][1],LayerBase[i][9][0],maxY] }) }) layRast[layRast.length-1].setVisible(false) } } var viewRast = new ol.View({ projection: pixelProjection, maxResolution: 4, minResolution: 1, resolution: 1 }) var mappa = new ol.Map({ layers: layRast, target: document.getElementById(htmlEl), controls: [], view: viewRast }); mappa.getView().setCenter([mappa.getSize()[0]/2,maxY-mappa.getSize()[1]/2]) mappa.renderSync() return mappa } //CURSORE LINK GEOGRAFICO var geoMarker = [] var vectorLayer = [] var stileGeoMarker = creaStile('rgb(0,0,0)',1,'rgba(255,255,255,0.5)',4) for (i=0;i<2;i++) { geoMarker[i] = new ol.Feature({ geometry: new ol.geom.Point([0,0]) }); vectorLayer[i] = new ol.layer.Vector({ title: 'PuntatoreLink', baserif: '', source: new ol.source.Vector({ features: [geoMarker[i]] }), style: null }); mappe[i][0].addLayer(vectorLayer[i]) } mappe[0][0].on('pointermove', function(evt) { vectorLayer[0].setStyle(null) vectorLayer[1].setStyle(stileGeoMarker) geoMarker[1].getGeometry().setCoordinates(evt.coordinate); }); mappe[0][0].getViewport().addEventListener('mouseout', function() { vectorLayer[1].setStyle(null) }); mappe[1][0].on('pointermove', function(evt) { vectorLayer[1].setStyle(null) vectorLayer[0].setStyle(stileGeoMarker) geoMarker[0].getGeometry().setCoordinates(evt.coordinate); }); mappe[1][0].getViewport().addEventListener('mouseout', function() { vectorLayer[0].setStyle(null) }); var selInt = [[null,null],[null,null]] //******************************************************** var duration = 1500; function flash(feature) { var start = new Date().getTime(); var listenerKey; var listenerKey2; function animate(event) { var vectorContext = event.vectorContext; var frameState = event.frameState; var flashGeom = feature.getGeometry(); var elapsed = frameState.time - start; var elapsedRatio = elapsed / duration; //radius will be 5 at start and 30 at end. var opacity2 = ol.easing.easeOut(elapsedRatio); var opacity = ol.easing.easeOut(1 - elapsedRatio); var style = creaStile('rgba(0,92,228,'+0.7*opacity2+')',9*opacity+3,'rgba(0,92,228,'+0.7*opacity+')',10,9*opacity+3); vectorContext.setStyle(style); vectorContext.drawGeometry(flashGeom); if (elapsed > duration) { ol.Observable.unByKey(listenerKey); ol.Observable.unByKey(listenerKey2); return; } // tell OL3 to continue postcompose animation mappe[0][0].render(); mappe[1][0].render(); } listenerKey = mappe[0][0].on('postcompose', animate); listenerKey2 = mappe[1][0].on('postcompose', animate); } //******************************************************** function SelFeat (feature,anima){ for (m=0;m 20 ? 20 : z) scala[i]=zscale[z] wm[i] = mappe[i][0].getSize()[0]*currentResolution(mappe[i][0]) hm[i] = mappe[i][0].getSize()[1]*currentResolution(mappe[i][0]) wmm[i] = wm[i]/scala[i]*1000 hmm[i] = hm[i]/scala[i]*1000 pix2mm[i]=currentResolution(mappe[i][0])/scala[i]*1000 var canvCrop=document.createElement('canvas'); var ctx1=canvCrop.getContext('2d'); if (wmm[i]>wmp || hmm[i]>hmp) { //Crop canvCrop.width=Math.round(Math.min(wmp,wmm[i])/pix2mm[i]); canvCrop.height=Math.round(Math.min(hmp,hmm[i])/pix2mm[i]); var wmpcrp = canvCrop.width*pix2mm[i] var hmpcrp = canvCrop.height*pix2mm[i] ctx1.drawImage(canvasImg[i][0],Math.round((wmm[i]-wmpcrp)/pix2mm[i]/2),Math.round((hmm[i]-hmpcrp)/pix2mm[i]/2),canvCrop.width,canvCrop.height,0,0,canvCrop.width,canvCrop.height); wmm[i]=wmpcrp hmm[i]=hmpcrp } else { //No crop canvCrop.width=canvasImg[i][0].width; canvCrop.height=canvasImg[i][0].height; ctx1.drawImage(canvasImg[i][0],0,0); } canvasImg[i][0] = canvCrop.toDataURL('image/jpeg',JpegQual) if (canvasImg[i==0 ? 1 : 0][2] == undefined) { if (LayerBaseCorrente(mappe[i][0]).get('gruppo')==LayerBaseCorrente(mappe[i][0]).get('name')) { intmap[i]=LayerBaseCorrente(mappe[i][0]).get('name')+" - scala 1:" + scala[i] } else { intmap[i]=LayerBaseCorrente(mappe[i][0]).get('gruppo') + ': ' + LayerBaseCorrente(mappe[i][0]).get('name')+" - scala 1:" + scala[i] } pdf.addImage(canvasImg[i][0], 'JPEG',marg+wmp*i+(wmp-wmm[i])/2, marg+margsup+(hmp-hmm[i])/2, wmm[i], hmm[i]); } if (canvasImg[i][2] != undefined) { pdf.rect(i==0 ? wpmm/2 : marg, marg+margsup, wpmm/2-marg, (hpmm-marg*2-margsup-marginf), 'F') var immres=Math.min((wpmm/2-marg)/canvasImg[i][2].width,(hpmm-marg*2-margsup-marginf)/canvasImg[i][2].height) var wimmleg = canvasImg[i][2].width*immres var himmleg = canvasImg[i][2].height*immres pdf.addImage(canvasImg[i][2], 'JPEG',(i==0 ? wpmm/2 : marg) + ((wpmm/2-marg)-wimmleg)/2,marg+margsup+ (hpmm-himmleg-marg*2-margsup-marginf)/2, wimmleg, himmleg); } if (canvasImg[i][1] != undefined) { //OVERVIEW var rovw =mappe[i][1].getSize()[0]/mappe[i][1].getSize()[1] var hovw = rovw>1 ? 40/rovw : 40 var wovw = rovw>1 ? 40 : 40*rovw if (i==0) { pdf.addImage(canvasImg[i][1], 'JPEG',marg+2,marg+margsup+2,wovw,hovw); pdf.rect(marg+2,marg+margsup+2,wovw,hovw, 'S') } else { pdf.addImage(canvasImg[i][1], 'JPEG',wpmm-marg-wovw-2,marg+margsup+2,wovw,hovw); pdf.rect(wpmm-marg-wovw-2,marg+margsup+2,wovw,hovw, 'S') } } } if (numfin>1 || canvasImg[0][2] != undefined) { pdf.line(wpmm/2,marg+margsup,wpmm/2,hpmm-marg-marginf) } pdf.line(marg,marg+margsup,marg,hpmm-marg-marginf) pdf.line(wpmm-marg,marg+margsup,wpmm-marg,hpmm-marg-marginf) pdf.setFontSize(10) pdf.rect(0, 0, wpmm, marg+margsup, 'F') pdf.line(marg,marg+margsup,wpmm-marg,marg+margsup) pdf.rect(0, hpmm-marg-marginf, wpmm, marg+marginf, 'F') pdf.line(marg,hpmm-marg-marginf,wpmm-marg,hpmm-marg-marginf) var immst=document.createElement('img') /*immst.src='./layers/stemma.png' stw=5*immst.width/immst.height pdf.addImage(immst, 'PNG',marg,marg+1,stw,5); var immmw=document.createElement('img') immmw.src='../_shared/resources/mappeweb.png' stw=5*immmw.width/immmw.height pdf.addImage(immmw, 'PNG',wpmm-marg-stw,marg+hmp-3,stw,5);*/ pdf.setFontType("bold") pdf.text(marg+(immst==undefined ? 5 : 0),marg+margsup-2,Intesta) pdf.setTextColor(0,128,255) pdf.setFontType("italic") pdf.text(wpmm-marg-8.2,marg+margsup-2,"mappe","right") pdf.setTextColor(255,128,0) pdf.setFontType("bolditalic") pdf.text(wpmm-marg,marg+margsup-2,"WEB","right") pdf.setFontType("normal") pdf.setTextColor(0,0,0) pdf.text(marg,hpmm-marg-marginf+4,intmap[0]) pdf.text(marg+wmp,hpmm-marg-marginf+4,intmap[1]) pdf.save('estratto.pdf'); $("#divLoading").removeClass('show') } //////////////////////////////RICERCA OGGETTI var progRic=0 var trovate = [] var curRic = 0 var criteri = [] var layRic var ordRic function featDaLay(lay) { var sor=lay.getSource() if (sor instanceof ol.source.VectorTile) { return []; } if (sor instanceof ol.source.ImageVector) { sor=sor.getSource() } return sor.getFeatures() } // case insensitive, digits to number interpolation function natSort(as, bs){ var a, b, a1, b1, i= 0, L, rx= /(\d+)|(\D+)/g, rd= /\d/; if(isFinite(as) && isFinite(bs)) return as - bs; a= String(as).toLowerCase(); b= String(bs).toLowerCase(); if(a=== b) return 0; if(!(rd.test(a) && rd.test(b))) return a> b? 1: -1; a= a.match(rx); b= b.match(rx); L= a.length> b.length? b.length: a.length; while(i < L){ a1= a[i]; b1= b[i++]; if(a1!== b1){ if(isFinite(a1) && isFinite(b1)){ if(a1.charAt(0)=== "0") a1= "." + a1; if(b1.charAt(0)=== "0") b1= "." + b1; return a1 - b1; } else return a1> b1? 1: -1; } } return a.length - b.length; } function creaModalSearch (titolo) { //criteri: array [[campo1,valore1],[campo2,valore2]....] progRic+=1 ricercaImpostata=false var divPrinc=$("
",{'class':'modal fade','id':'searchModal','role':'dialog'}) var divHeader=$("
",{'class':'modal-header list-group-item active'}) $(divHeader).append("").append("") var divBody=$("
",{'class':'modal-body'}) var idfoc = "" for (i=0;i"+criteri[i][0]+(criteri[i][4]==true ? " (obbligatorio)" : "")+"") var inp=document.createElement('input') inp.type='text' inp.id=progRic+'input'+i if (i==0) {idfoc=inp.id} $(inp).keyup(function(event){ if(event.keyCode == 13){ var idcrit = $(this).attr('id').split("input")[1] criteri[idcrit][1]=$(this).val() $("#"+progRic+'submit').focus(); $("#"+progRic+'submit').click(); } }); inp.className="form-control" inp.placeholder='inserisci valore' + (criteri[i][3] ? ' anche parziale' : ' esatto') if (criteri[i][2]==true) { //flag tendina var lista = [] $(inp).autocomplete({ source: lista, minLength: 0, change: function() { var idcrit = $(this).attr('id').split("input")[1] criteri[idcrit][1]=$(this).val() } }) inp.onfocus=function() { $("#noOggetti").html("") var idcrit = $(this).attr('id').split("input")[1] $(this).autocomplete("option",{source: updateList(undefined,idcrit,true,true)}) } inp.onclick=function() { if($(this).val()=="") { $(this).autocomplete("search","") } } var btdrop = document.createElement('span') btdrop.id=progRic+'selbtn'+i btdrop.className="btn input-group-addon closed" btdrop.onmousedown=function() { var aperto=$("#"+$(this).attr('id').replace("selbtn","input")).autocomplete("widget").is(":visible") if (aperto) { $(this).removeClass("closed") } else { $(this).addClass("closed") } } btdrop.onclick=function() { var idcrit = $(this).attr('id').split("selbtn")[1] if ($(this).hasClass("closed")) { $("#"+$(this).attr('id').replace("selbtn","input")).autocomplete("option",{source: updateList(undefined,idcrit,true,true)}) $("#"+$(this).attr('id').replace("selbtn","input")).autocomplete("search","") } else { $("#"+$(this).attr('id').replace("selbtn","input")).autocomplete("close") } } $(divBody).append($("
",{'class':'input-group'}).append(inp).append($(btdrop).append(""))) } else { inp.onchange=function() { var idcrit = $(this).attr('id').split("input")[1] criteri[idcrit][1]=$(this).val() } inp.onfocus=function() { $("#noOggetti").html("") } $(divBody).append(inp) } if (i==0) { $(divPrinc).on('shown.bs.modal',function () { $('#'+idfoc).focus() }) } } var divFooter=$("
",{'class':'modal-footer'}) var btnSearch=document.createElement('button') btnSearch.id=progRic+'submit' btnSearch.type="button" btnSearch.onclick=function() { var obbligatori = false $("#noOggetti").html("") for (i=0;i0 || LayerCollegatoDiRW(lric.get('title'))!=undefined) { cercaOggetti() } else { $("#divLoadingText").html('Caricamento ' + lric.get('name') + '...') $("#divLoading").addClass('show') lric.getSource().on('change', function(e) { $("#divLoading").removeClass('show') cercaOggetti() ol.Observable.unByKey(this) }) lric.setVisible(true) } } } btnSearch.className="btn btn-primary" btnSearch.appendChild(document.createTextNode('cerca')) $(divFooter).append("").append(btnSearch) $(divPrinc).append($("
",{'class':'modal-dialog modal-sm'}).append($("
",{'class':'modal-content'}).append(divHeader).append(divBody).append(divFooter)) ) $(divPrinc).on('hidden.bs.modal',function() { $(this).html(''); $(this).data('bs.modal', null); }) return divPrinc } var crit = [] function strutturaCrit(LayRW,feat,rif) { crit = [] var arrLayRW=TrovaInArray(LayerAttivi,rif,LayRW) var attrRW=arrLayRW[8] for (i=0;i1000) { return ["---casistica troppo numerosa---"] } lista[lista.length]=f[j].get(idcampo) } } lista.sort(natSort) for (k=0;k"+crit[i][0]+(crit[i][3]==true ? " (obbligatorio)" : "")+"") var inp=document.createElement('input') inp.type='text' inp.id=progRic+'input'+i if (i==0) {idfoc=inp.id} $(inp).keyup(function(event){ if(event.keyCode == 13){ var idcrit = $(this).attr('id').split("input")[1] crit[idcrit][1]=$(this).val() $("#"+'btnIns'+progRic).focus(); $("#"+'btnIns'+progRic).click(); } }); inp.className="form-control" inp.placeholder='inserisci valore' if (feat != undefined) { inp.value=crit[i][1] } if (crit[i][2]==true) { //flag tendina var lista = [] var lric =layerByName(curLayReadWrite,mappe[0][0],false) var f=featDaLay(lric) lista=updateList(f,crit[i][0]) $(inp).autocomplete({ source: lista, minLength: 0, change: function() { var idcrit = $(this).attr('id').split("input")[1] crit[idcrit][1]=$(this).val() } }) inp.onfocus=function() { $("#noOggetti").html("") } inp.onclick=function() { if($(this).val()=="") { $(this).autocomplete("search","") } } var btdrop = document.createElement('span') btdrop.id=progRic+'selbtn'+i btdrop.className="btn input-group-addon closed" btdrop.onmousedown=function() { var aperto=$("#"+$(this).attr('id').replace("selbtn","input")).autocomplete("widget").is(":visible") if (aperto) { $(this).removeClass("closed") } else { $(this).addClass("closed") } } btdrop.onclick=function() { var idcrit = $(this).attr('id').split("selbtn")[1] if ($(this).hasClass("closed")) { $("#"+$(this).attr('id').replace("selbtn","input")).autocomplete("search","") } else { $("#"+$(this).attr('id').replace("selbtn","input")).autocomplete("close") } } $(divBody).append($("
",{'class':'input-group'}).append(inp).append($(btdrop).append(""))) } else { inp.onchange=function() { var idcrit = $(this).attr('id').split("input")[1] crit[idcrit][1]=$(this).val() } inp.onfocus=function() { $("#noOggetti").html("") } $(divBody).append(inp) } if (i==0) { $(divPrinc).on('shown.bs.modal',function () { $('#'+idfoc).focus() }) } } } function assegnaLivelloReg (dato,divPrinc,divBody,btnSearch,NomLayEl,anim,feat,idriflay) { if (feat==undefined) { curLayReadWrite=TrovaInArray(LayerAttivi,5,dato)[1] } var lric =layerByName(curLayReadWrite,mappe[0][0],false) var f=featDaLay(lric) //if (f.length>0) { assegnaLivelloRegInt (dato,divPrinc,divBody,btnSearch,NomLayEl,anim,feat,idriflay) /*} else { $("#divLoadingText").html('Caricamento ' + lric.get('name') + '...') $("#divLoading").addClass('show') lric.getSource().on('change', function(e) { console.log(lric.getSource().getSource().getState()) $("#divLoading").removeClass('show') assegnaLivelloRegInt (dato,divPrinc,divBody,btnSearch,NomLayEl,anim,feat,idriflay) ol.Observable.unByKey(this) }) lric.setVisible(true) }*/ } function assegnaLivelloRegInt (dato,divPrinc,divBody,btnSearch,NomLayEl,anim,feat,idriflay) { $(divBody).hide() $(divBody).html("") $(NomLayEl).html(""+ dato + " ") //strutturaCrit(LayRW,feat,1,divBody) strutturaCrit(dato,feat,idriflay) strutturaMaschera(feat,divBody,divPrinc) $(divBody).show(anim ? 'slide':undefined) $(btnSearch).show(anim ? 'slide':undefined) } function creaModalInsertFeat (titolo,feat,LayRW,geom) { progRic+=1 var divPrinc=$("
",{'class':'modal fade','id':'insModal'+progRic,'role':'dialog','data-backdrop':'static'}) var divHeader=$("
",{'class':'modal-header list-group-item active','style':'margin-bottom:0px'}) $(divHeader).append("").append("") var divBody=$("
",{'class':'modal-body','id':'insModalBody'+progRic}) var divFooter=$("
",{'class':'modal-footer','id':'insModalFooter'+progRic}) var btnSearch=document.createElement('button') if (LayRW==undefined) { var divBodyHead=$("
",{'class':'modal-body list-group-item-info','style':'padding-top:0px;padding-bottom:5px'}) $(divBody).hide() $(btnSearch).hide() var lista=[] var tipoGeo=geom.getType() for (i=LayerAttivi.length-1;i>=0;i--) { if (LayerAttivi[i][6] != undefined) { if (LayerAttivi[i][10] == undefined) { lista.push(LayerAttivi[i][5]) } else { if (LayerAttivi[i][10].indexOf("Ins")>-1) { var geoAmm=LayerAttivi[i][11] if ((tipoGeo=="Polygon" && geoAmm.indexOf("A")>-1) || (tipoGeo=="LineString" && geoAmm.indexOf("L")>-1) || (tipoGeo=="Point" && geoAmm.indexOf("P")>-1)) { lista.push(LayerAttivi[i][5]) } } } } } var stringaGeo ="" if (tipoGeo=="Polygon") { stringaGeo="areale" } else if (tipoGeo=="LineString") { stringaGeo="lineare" } else if (tipoGeo=="Point") { stringaGeo="puntuale" } var NomLayEl=$("") var LabReg=$("Registra nuovo oggetto "+stringaGeo+" in
") $(divBodyHead).append(LabReg)//.append(NomLayEl) lista.sort(natSort) if (lista.length==1) { $(LabReg).append(NomLayEl) assegnaLivelloReg(lista[0],divPrinc,divBody,btnSearch,NomLayEl,false,undefined,5) } else if (lista.length<=20) { var dropDestID=$("",{'class':'dropdown open','id':'dropDestID'}).append(NomLayEl) var dropDest=$("",{'class':'btn btn-xs btn-default dropdown-toggle','id':'dropDest','data-toggle':'dropdown'}) var dropDestList=$("