//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(""+titolo+"
")
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(""+titolo+"
")
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=$("",{'class':'form-control','style':'min-width:100%','onchange':'$("#"+idfoc).focus();$(this).addClass("selLiv");assegnaLivelloReg($(this).val(),$("#insModal"+progRic),$("#insModalBody"+progRic),$("#btnIns"+progRic),undefined,true,undefined,5)'})
$(dropDestList).append($(""))
for (l=0;l")
$(li).html(lista[l])
$(dropDestList).append(li)
}
$(dropDestID).append(dropDestList)
$(divBodyHead).append(dropDestID)
} else {
$(LabReg).append(NomLayEl)
var inpdest=document.createElement('input')
inpdest.type='text'
inpdest.id=progRic+'inputDest'
$(inpdest).keyup(function(event){
if(event.keyCode == 13){
}
});
inpdest.className="form-control"
inpdest.placeholder='seleziona livello destinazione'
$(inpdest).autocomplete({
source: lista,
minLength: 0,
change: function() {
},
select: function(e,ui) {
$(this).addClass("selLiv")
assegnaLivelloReg(ui.item['value'],$("#insModal"+progRic),$("#insModalBody"+progRic),$("#btnIns"+progRic),undefined,true,undefined,5)
}
})
var btdropdest = document.createElement('span')
btdropdest.id=progRic+'selbtnDest'
btdropdest.className="btn input-group-addon closed"
btdropdest.onmousedown=function() {
var aperto=$("#"+$(this).attr('id').replace("selbtn","input")).autocomplete("widget").is(":visible")
if (aperto) {
$(this).removeClass("closed")
} else {
$(this).addClass("closed")
}
}
btdropdest.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")
}
}
$(divBodyHead).append($("",{'class':'input-group'}).append(inpdest).append($(btdropdest).append("")))
}
} else {
assegnaLivelloReg(LayRW,divPrinc,divBody,btnSearch,undefined,false,feat,1)
}
//footer
btnSearch.type="button"
btnSearch.id="btnIns"+progRic
btnSearch.onclick=function() {
var obbligatori = false
$("#noOggetti").html("")
for (i=0;i").append(btnSearch)
$(divPrinc).append($("",{'class':'modal-dialog modal-sm'}).append($("",{'class':'modal-content'}).append(divHeader).append(divBodyHead).append(divBody).append(divFooter))
)
$(divPrinc).on('hidden.bs.modal',function() {
$(this).html('');
$(this).data('bs.modal', null);
})
return divPrinc
}
function creaModalCancella (ID,selId,LayRW) {
progRic+=1
//EliminaFeatDB(ID,selId)
divPrinc=document.createElement('div')
divPrinc.className="modal fade"
divPrinc.id="deleteModal"
divPrinc.role="dialog"
divDlg=document.createElement('div')
divDlg.className="modal-dialog modal-sm"
var divContent=document.createElement('div')
divContent.className="modal-content"
var divHeader=document.createElement('div')
divHeader.className="modal-header list-group-item active"
var btnClose=document.createElement('button')
btnClose.type="button"
btnClose.className='btn btn-xs btn-danger pull-right'
btnClose.dataset.dismiss="modal"
btnClose.appendChild(document.createTextNode('X'))
var mdlTitle=document.createElement('h5')
mdlTitle.className='modal-title'
mdlTitle.appendChild(document.createTextNode("Eliminazione oggetto"))
divHeader.appendChild(btnClose)
divHeader.appendChild(mdlTitle)
var divBody=document.createElement('div')
divBody.className="modal-body"
divBody.innerHTML="L'oggetto selezionato verrà definitivamente eliminato.
Sei sicuro di voler procedere?"
var divFooter=document.createElement('div')
divFooter.className="modal-footer"
var btnYes=document.createElement('button')
btnYes.type="button"
btnYes.id="buttonYes"
btnYes.onclick=function() {
EliminaFeatDB(ID,selId,LayRW)
}
btnYes.className="btn btn-primary"
btnYes.dataset.dismiss="modal"
btnYes.appendChild(document.createTextNode('Sì'))
var btnNo=document.createElement('button')
btnNo.type="button"
btnNo.id="buttonNo"
btnNo.className="btn btn-primary"
btnNo.dataset.dismiss="modal"
btnNo.appendChild(document.createTextNode('No'))
divFooter.appendChild(btnNo)
divFooter.appendChild(btnYes)
divContent.appendChild(divHeader)
divContent.appendChild(divBody)
divContent.appendChild(divFooter)
divDlg.appendChild(divContent)
divPrinc.appendChild(divDlg)
$(divPrinc).on('shown.bs.modal',function () {
$('#buttonYes').focus()
})
$(divPrinc).on('hidden.bs.modal',function() {
$(this).html('');
$(this).data('bs.modal', null);
})
return divPrinc
}
//Ciclo per compilazione dropdown ricerca
for (var i=0;i1) {
if (ordRic != undefined) {
trovate.sort(featSort)
}
$("#navric").show()
$("#singric").hide()
document.getElementById("ricprec").className="btn btn-disabled"
document.getElementById("ricsucc").className="btn btn-info"
document.getElementById("riccur").innerHTML=curRic+'/'+trovate.length
}
else {
$("#navric").hide()
$("#singric").show()
}
FeatSelCur=[[trovate[0],layRic[0],layRic[1]]]
RimuoviMarcaSelezioneOv()
visualizzaOggettiSel()
SelFeat(trovate[0],true,false)
$('#searchModal').modal('hide')
}
}
//Funzione ricerca eseguita da dropdown
function cerca(idLayCerca) {
var nomeLay ='-cerca-'+LayerCerca[idLayCerca][0]
criteri =LayerCerca[idLayCerca][3]
var titolo =LayerCerca[idLayCerca][2]
$('#searchModal').remove()
layRic=[nomeLay,layerByName(nomeLay,mappe[0][0],false).get('name')]
ordRic=LayerCerca[idLayCerca][4]
var mod=creaModalSearch(titolo)
$(mod).modal('show')
}
function modifGeoWarn() {
m=creaModalMsg("Modifica geometrica in corso","Confermare o annullare la modifica geometrica in corso prima di procedere");
$(m).modal('show');
}
$(document).on("click", "#dropInsert", function(){
if (curModifGeo) {
modifGeoWarn()
return;
}
});
$(document).on("click", "#dropSearch", function(){
if (curModifGeo) {
modifGeoWarn()
return;
}
});
$(document).on("click", "#ricsucc", function(){
if (curModifGeo) {
modifGeoWarn()
return;
}
if(curRic==trovate.length) {return}
RimuoviMarcaSelezioneOv()
curRic+=1
document.getElementById("riccur").innerHTML=curRic+'/'+trovate.length
if(curRic==trovate.length) {
document.getElementById("ricsucc").className="btn btn-disabled"
}
document.getElementById("ricprec").className="btn btn-info"
FeatSelCur=[[trovate[curRic-1],layRic[0],layRic[1]]]
visualizzaOggettiSel()
SelFeat(trovate[curRic-1],true)
});
$(document).on("click", "#ricprec", function(){
if (curModifGeo) {
modifGeoWarn()
return;
}
if(curRic==1) {return}
RimuoviMarcaSelezioneOv()
curRic-=1
document.getElementById("riccur").innerHTML=curRic+'/'+trovate.length
if(curRic==1) {
document.getElementById("ricprec").className="btn btn-disabled"
}
document.getElementById("ricsucc").className="btn btn-info"
FeatSelCur=[[trovate[curRic-1],layRic[0],layRic[1]]]
visualizzaOggettiSel()
SelFeat(trovate[curRic-1],true)
});
$(document).on("click", "#riccur", function(){
if (curModifGeo) {
modifGeoWarn()
return;
}
RimuoviMarcaSelezioneOv()
FeatSelCur=[[trovate[curRic-1],layRic[0],layRic[1]]]
visualizzaOggettiSel()
SelFeat(trovate[curRic-1],true)
});
$(document).on("click", "#riccursing", function(){
if (curModifGeo) {
modifGeoWarn()
return;
}
RimuoviMarcaSelezioneOv()
FeatSelCur=[[trovate[curRic-1],layRic[0],layRic[1]]]
visualizzaOggettiSel()
SelFeat(trovate[curRic-1],true)
});
//////////////////////////////////////////
//////////TOOLTIP FUORI AREA
var helpTooltipElement= [];
var helpTooltip = [];
createHelpTooltip();
function createHelpTooltip() {
for (m=0;m0) {
helpTooltipElement[i].className='tooltiphelp hidden'
fuori=false
} else {
mappa.getTarget().style.cursor = '';
helpTooltipElement[i].innerHTML = 'AREA FUORI DOMINIO
(non coperta dallo sfondo corrente)'
helpTooltip[i].setPosition(e.coordinate);
helpTooltipElement[i].className='tooltiphelp'
fuori=true
}
}
//////////MARKER SEL
//////////////////////////////////////////
var selTooltipElement= [[null,null],[null,null]];
var selTooltip = [[null,null],[null,null]];
createselTooltip();
function createselTooltip() {
for (m=0;m0) {
if (document.getElementById(canvasId) != null) {
aggiornaCanvas(canvasId,featDaLay(lay)[0].getGeometry().getType(),lay.getSource().getStyle())
}
return
} else {
document.getElementById("divLoadingText").innerHTML='Caricamento ' + lay.get('name') + '...'
$("#divLoading").addClass('show')
lay.getSource().on('change', function(e) {
if (document.getElementById(canvasId) != null) {
aggiornaCanvas(canvasId,featDaLay(lay)[0].getGeometry().getType(),lay.getSource().getStyle())
}
$("#divLoading").removeClass('show')
ol.Observable.unByKey(this)
})
}
}
}
////////////////////////////GEOCODER
function creaModalGeocode () {
titolo = "Ricerca testo (Open Street Map)"
ricercaImpostata=false
divPrinc=document.createElement('div')
divPrinc.className="modal fade"
divPrinc.id="searchModal"
divPrinc.role="dialog"
divDlg=document.createElement('div')
divDlg.className="modal-dialog modal-sm"
var divContent=document.createElement('div')
divContent.className="modal-content"
var divHeader=document.createElement('div')
divHeader.className="modal-header list-group-item active"
var btnClose=document.createElement('button')
btnClose.type="button"
btnClose.className='btn btn-xs btn-danger pull-right'
btnClose.dataset.dismiss="modal"
btnClose.appendChild(document.createTextNode('X'))
var mdlTitle=document.createElement('h5')
mdlTitle.className='modal-title'
mdlTitle.appendChild(document.createTextNode(titolo))
divHeader.appendChild(btnClose)
divHeader.appendChild(mdlTitle)
var divBody=document.createElement('div')
divBody.className="modal-body"
var inp=document.createElement('input')
inp.type='text'
inp.id=progRic+'IndirizzoGeocode'
$(inp).keyup(function(event){
if(event.keyCode == 13){
$('#'+'buttonGeocode').click();
}
});
inp.className="form-control"
inp.placeholder='inserisci testo'
var labinp=document.createElement('label')
labinp.className="h5 text-info pull-left"
labinp.appendChild(document.createTextNode("Testo"))
divBody.appendChild(labinp)
divBody.appendChild(inp)
var divFooter=document.createElement('div')
divFooter.className="modal-footer"
var labNotFound=document.createElement('label')
labNotFound.id="noOggetti"
labNotFound.className="h5 text-danger pull-left"
var btnSearch=document.createElement('button')
btnSearch.type="button"
btnSearch.id="buttonGeocode"
btnSearch.onclick=function() {
cercaOggettiGeocode($("#"+progRic+"IndirizzoGeocode").val())
}
btnSearch.className="btn btn-primary"
//btnSearch.dataset.dismiss="modal"
btnSearch.appendChild(document.createTextNode('cerca'))
divFooter.appendChild(labNotFound)
divFooter.appendChild(btnSearch)
divContent.appendChild(divHeader)
divContent.appendChild(divBody)
divContent.appendChild(divFooter)
divDlg.appendChild(divContent)
divPrinc.appendChild(divDlg)
$(divPrinc).on('shown.bs.modal',function () {
$('#'+inp.id).focus()
})
$(divPrinc).on('hidden.bs.modal',function() {
$(this).html('');
$(this).data('bs.modal', null);
})
return divPrinc
}
//Funzione ricerca eseguita da modal
function cercaOggettiGeocode(indirizzo) {
layRic = ["RisultatiGeocode","Ricerca testo (Open Street Map)"]
trovate = []
var address = indirizzo.replace(","," ");
address = $.trim(address).replace(" ","+");
var city = GeocComune;
var county = GeocProv;
var country = "Italy";
var query_string = address+","+city+","+county+","+country;
query_string += "&format=json&limit=5&polygon=0&addressdetails=1";
var geocodingAPI = "http://nominatim.openstreetmap.org/search?q=";
geocodingAPI += query_string;
$.getJSON(geocodingAPI, function (json) {
if ($.isEmptyObject(json)) {
$("#navric").hide()
document.getElementById("noOggetti").innerHTML='testo non trovato'
} else {
var campi = ['lon','lat','display_name']
var dati = []
for (j=0;j1) {
$("#navric").show()
$("#singric").hide()
document.getElementById("ricprec").className="btn btn-disabled"
document.getElementById("ricsucc").className="btn btn-info"
document.getElementById("riccur").innerHTML=curRic+'/'+trovate.length
}
else {
$("#navric").hide()
$("#singric").show()
}
for (i=0;i2) { //Condizione va impostata confrontando con estensione overview
$("#navric").hide()
document.getElementById("noOggetti").innerHTML='coordinate non valide o esterne al territorio in esame'
} else {
trovate[trovate.length] = new ol.Feature({
geometry: new ol.geom.Point(coord),
Descrizione: dati[2]
});
curRic=1
$("#navric").hide()
$("#singric").show()
for (i=0;i'
+'
'
+'
'
+'GESTIONE WEB
CARTOGRAFIA TEMATICA'
+'
'
+'sviluppato da:
'
+'
'
+''
+'
STUDIO LUCA ZANELLA INGEGNERE
'
+'
www.lzi.it'
+'
'
+'utilizzando le librerie di terze parti:
'
+'Openlayers
'
+'Bootstrap
'
+'jsPdf'
+'
'
)
$(m).modal('show')
});
///////////////////////Style
//Variabili per parcheggio parametri stile corrente
var cl=[] //colori
var tr=[] //colore - trasparenza
var wi=[] //spessori
function estraiColore (colore) {
var spl = colore.replace("rgba(","").replace("rgb(","").replace(")","").split(",")
return 'rgb('+spl[0]+','+spl[1]+','+spl[2]+')'
}
function estraiTrasparenza (colore) {
var spl = colore.replace("rgba(","").replace("rgb(","").replace(")","").split(",")
spl[3]=Math.round(parseFloat(spl[3])*100/25)
return trasparenze[spl[3]]
}
function creaModalStyle (canvas) {
var mapId=parseInt(canvas.slice(0,1))-1
var layname=canvas.replace('canvas','').slice(1)
var lay=layerByName(layname,mappe[mapId][0])
var style=lay.getSource().getStyle()
if (lay.get('ReadWrite')=='RW') {
var type="Polygon"
} else {
var type=lay.getSource().getSource().getFeatures()[0].getGeometry().getType()
}
divPrinc=document.createElement('div')
divPrinc.className="modal fade"
divPrinc.id="styleModal"
divPrinc.role="dialog"
divDlg=document.createElement('div')
divDlg.className="modal-dialog modal-sm"
var divContent=document.createElement('div')
divContent.className="modal-content"
var divHeader=document.createElement('div')
divHeader.className="modal-header list-group-item active"
var btnClose=document.createElement('button')
btnClose.type="button"
btnClose.className='btn btn-xs btn-danger pull-right'
btnClose.dataset.dismiss="modal"
btnClose.appendChild(document.createTextNode('X'))
var mdlTitle=document.createElement('h5')
mdlTitle.className='modal-title'
mdlTitle.appendChild(document.createTextNode('Stile ' + lay.get('name')))
divHeader.appendChild(btnClose)
divHeader.appendChild(mdlTitle)
var divBody=document.createElement('div')
divBody.className="modal-body"
cl[0]=estraiColore(style.getStroke().getColor())
tr[0]=estraiTrasparenza(style.getStroke().getColor())
wi[0]="spessore "+style.getStroke().getWidth()
cl[1]=estraiColore(style.getFill().getColor())
tr[1]=estraiTrasparenza(style.getFill().getColor())
type.replace("Multi","")
if (type == 'LineString') {
var titStroke = document.createElement('div')
titStroke.innerHTML=HTMLstile(0,"s",true,"Caratteristiche linea")
divBody.appendChild(titStroke)
}
if (type == 'Polygon' || type == 'Point') {
var titStroke = document.createElement('div')
titStroke.innerHTML=HTMLstile(0,"s",true,"Caratteristiche bordo")
divBody.appendChild(titStroke)
var titFill = document.createElement('div')
titFill.innerHTML=HTMLstile(1,"f",false,"Caratteristiche riempimento")
divBody.appendChild(titFill)
}
var divFooter=document.createElement('div')
divFooter.className="modal-footer"
var btnClose=document.createElement('button')
btnClose.className="btn btn-primary"
btnClose.type="button"
btnClose.onclick=function(){
if (lay.get('ReadWrite')=='RW' || type == 'Point') {
var StrCol = ricavaColore(cl[0],tr[0])
var StrWidth = parseFloat(wi[0].replace("spessore ",""))
var FillCol = ricavaColore(cl[1],tr[1])
var radius = style.getImage().getRadius()
lay.getSource().setStyle(creaStile(StrCol,StrWidth,FillCol,radius))
layerCaricato(lay,canvas)
} else {
if (type == 'LineString' || type == 'Polygon') {
style.getStroke().setWidth(parseFloat(wi[0].replace("spessore ","")))
style.getStroke().setColor(ricavaColore(cl[0],tr[0]))
}
if (type == 'Polygon') {
style.getFill().setColor(ricavaColore(cl[1],tr[1]))
}
}
lay.getSource().changed()
}
btnClose.dataset.dismiss="modal"
btnClose.appendChild(document.createTextNode('Conferma'))
divFooter.appendChild(btnClose)
divContent.appendChild(divHeader)
divContent.appendChild(divBody)
divContent.appendChild(divFooter)
divDlg.appendChild(divContent)
divPrinc.appendChild(divDlg)
$(divPrinc).on('hidden.bs.modal',function() {
$(this).html('');
$(this).data('bs.modal', null);
})
return divPrinc
}
function aggiornaCanvas(canv,type,style) {
if( typeof(style)=="function") {
$("#"+canv).hide()
return
}
var cnv = document.getElementById(canv)
var ctx = cnv.getContext("2d")
var fc=style.getFill().getColor()
var sc=style.getStroke().getColor()
var sw=style.getStroke().getWidth()
ctx.clearRect(0,0,cnv.width,cnv.height)
if (type == "LineString") {
ctx.beginPath()
ctx.strokeStyle=sc
ctx.lineWidth=sw
ctx.moveTo(0,cnv.height/2)
ctx.lineTo(cnv.width-sw/2,cnv.height/2)
ctx.stroke()
ctx.closePath()
}
else if (type == "Polygon") {
ctx.beginPath();
ctx.fillStyle=fc
ctx.fillRect(0,0,cnv.width,cnv.height)
ctx.strokeStyle=sc
ctx.lineWidth=sw
ctx.moveTo(0,sw/2)
ctx.lineTo(cnv.width-sw/2,sw/2)
ctx.lineTo(cnv.width-sw/2,cnv.height-sw/2)
ctx.lineTo(sw/2,cnv.height-sw/2)
ctx.lineTo(sw/2,sw/2)
ctx.stroke()
ctx.closePath()
}
else if (type == "Point") {
var centerX = cnv.width / 2;
var centerY = cnv.height / 2;
var radius = 10-sw/2;
ctx.beginPath();
ctx.arc(centerX, centerY, radius, 0, 2 * Math.PI, false);
ctx.fillStyle = fc;
ctx.fill();
ctx.lineWidth = sw;
ctx.strokeStyle = sc;
ctx.stroke();
ctx.closePath()
}
$(cnv).show()
}
var colori = [
'rgb(170,0,0)',
'rgb(255,0,0)',
'rgb(255,145,0)',
'rgb(255,255,0)',
'rgb(48,145,0)',
'rgb(173,255,57)',
'rgb(0,0,255)',
'rgb(62,143,255)',
'rgb(255,0,255)',
'rgb(255,170,255)',
'rgb(82,60,0)',
'rgb(200,145,74)',
'rgb(255,255,255)',
'rgb(204,204,204)',
'rgb(127,127,127)',
'rgb(0,0,0)'
]
var trasparenze = [
'trasparente',
'trasparente al 25%',
'trasparente al 50%',
'trasparente al 75%',
'coprente'
]
var spessori = 6
function colore(idel,idcol) {
htmlel = ["stile_sc","stile_fc"]
cl[idel]=colori[idcol]
document.getElementById(htmlel[idel]).style.backgroundColor=cl[idel]
}
function trasparenza(idel,idtras) {
htmlel = ["stile_st","stile_ft"]
tr[idel]=trasparenze[idtras]
document.getElementById(htmlel[idel]).innerHTML=tr[idel]
}
function spessore(idel,idspes) {
htmlel = ["stile_sw"]
wi[idel]="spessore " + idspes
document.getElementById(htmlel[idel]).innerHTML=wi[idel]
}
function ricavaColore(col,tra) {
for (t=0;t' + intestazione +''
+ ''
+ '
'
+ '- '
+ '
'
+ ''
+ ''
+ '
'
+ ' '
linc+=1
if (linc==4 && c'
+ ''
+ '
'
+ ''
+ '
'
+ ''
+ '' + tr[id] + ''
+ ''
+ '
'
+ ''
}
html = html
+ ''
+ ''
if (spessore) {
html = html
+ '
'
+ ''
+ '' + wi[id] + ''
+ ''
+ '
'
+ ''
}
html = html
+ ''
+ ''
}
html = html
+ ''
+ '
'
return html
}