';
// } else {
// console.log(layer)
// var titolo = layer.Title;
// var estratto = layer.Abstract;
// var nome = layer.Name;
// var stile = (layer.Style != undefined)?layer.Style[0].Name:"";
// htmlWMS += '
';
// $.each(ris,function( index,value ) {
// var testo = value+"";
// const regex = /^[\[][\{]/;
// let m;
//
// if ((m = regex.exec(value)) !== null) {
// // The result can be accessed through the `m`-variable.
// m.forEach((match, groupIndex) => {
// var json = JSON.parse(value);
// var html = "
"
// for (x in json) {
// html += "
";
// html += "
"
// for (y in json[x]) {
// console.log(noFieldsArr.includes(y),y,noFieldsArr)
// if (! noFieldsArr.includes(y)) html += "
"+y+"
"+json[x][y]+"
";
// }
// html += "
"
// html += "
";
// }
// html += "
"
// value = html;
// });
// }
// if (index=="bbox") {
// var bboxArray = [];
// var p1 = turf.point([ value[0], value[1]]);
// var converted1 = turf.toWgs84(p1);
// bboxArray.push(turf.coordAll(converted1))
// var p2 = turf.point([ value[2], value[3]]);
// var converted2 = turf.toWgs84(p2);
// bboxArray.push(turf.coordAll(converted2))
// value = "click per zoom";
// }
// htmlID += '
'+index+'
'+value+'
';
// })
// htmlID += '
';
// if ((typeof lyrLoadedItem === "undefined")) lyrSelectedItem.clearLayers();
// if ((typeof lyrLoadedItem !== "undefined") && lyrLoadedItem.pm.enabled()) {}
// else {
// // $("#results").empty();
// $("#results div").html(htmlID)
// if (!globalSelect) sidebar.open("results");
// lyrSelectedItem.addData(turf.toWgs84(geom));
// lyrSelectedItem.bringToFront();
// if (geom.geometry.type!="Point") lyrSelectedItem.setStyle(selectSTyleOption);
// lyrSelectedItem.addTo(map);
// attivaBottoni();
// console.log("Feature selezionate: ",Object.keys(lyrSelectedItem._layers).length)
// }
// }
// }
// });
// }
// });
//
// var source = L.WMS.source(url, options);
// var wmsLayers = source.getLayer(LDenom);
//
// wmsLayers.addTo(map);
// // panelLayers.addOverlay({ name: LName,layer: wmsLayers});
// panelLayers.addOverlay({layer:wmsLayers},LName,"WMSs da URL");
// setActive();
// console.log("Layer ("+LName+") aggiunto");
// addUrlButton();
// }
function getObjects(obj, key, val) {
var objects = [];
for (var i in obj) {
if (!obj.hasOwnProperty(i)) continue;
if (typeof obj[i] == 'object') {
objects = objects.concat(getObjects(obj[i], key, val));
} else if (i == key && obj[key] == val) {
objects.push(obj);
}
}
return objects;
}
function rmvWMSAll(group) {
var Layers = panelLayers._layers;
var Larray = $.map(Layers, function(value, index) {
return [value];
});
console.log("Larray",Larray)
$.each(Larray,function( index,value ) {
// console.log("group",typeof group !== "undefined")
if ( typeof group !== "undefined"){
if(typeof value.group !== "undefined") {
if(value.group.name==group) {
var layerDef = {name:value.name,layer:value.layer};
panelLayers.removeLayer({name:value.name, layer:layerDef});
map.removeLayer(value.layer);
return true;
}
}
} else {
if (index ==0) return;
var layerDef = {name:value.name,layer:value.layer};
panelLayers.removeLayer({name:value.name, layer:layerDef});
map.removeLayer(value.layer);
return true;
}
});
}
function rmvWMS(workspace,layerName,layerDenom){
var Layers = panelLayers._layers;
$.each(Layers,function( index,value ) {
console.log(index,value )
if(typeof value !== "undefined") {
if(value.layerDenom.substring(value.layerDenom.indexOf(":") + 1)==layerDenom) {
var layerDef = {name:layerName,layer:value.layer};
panelLayers.removeLayer({name:layerName, layer:layerDef});
map.removeLayer(value.layer);
return true;
}
}
});
console.log("Layer ("+layerName+") eliminato!")
addLayerButton();
}
var htmlID = "";
// ########################################################################à####
// ######################################################### NB: write_db
function write_db(){
var json = Globaljson.responseJSON;
if ( !$.isEmptyObject(json.loadDb)) {
$("#infoBanner").html("db data loading... ");
$("#infoBanner").show();
$.getJSON("./postgres2json.php?q=write&tbl="+json.loadDb, function(contents) {
var geojson = contents;
if (! jQuery.isEmptyObject(lyrLoadedItem._layers)) {
panelLayers.removeLayer({name:tempFileName ,layer: lyrLoadedItem});
lyrLoadedItem.clearLayers();
}
console.log("db data loading... ");
}).done(function() {
console.log( "read success in ",Math.floor((Date.now()-start)/1000)," sec" );
$("#infoBanner").html("scrittura in "+Math.floor((Date.now()-start)/1000)+" sec")
setTimeout(function() { $("#infoBanner").hide(); }, 4000);
});
}
}
// ########################################################################à####
// ######################################################### NB: infoBanner
function infoBanner(text,color){
$("#infoBanner").html(text )
$("#infoBanner").show();
setTimeout(function() { $("#infoBanner").hide(); }, 5000);
console.log(text)
}
// ########################################################################à####
// ######################################################### NB: load_db
function load_db(){
// var json = Globaljson.responseJSON;
// if ( !$.isEmptyObject(json.loadDb)) {
// /* var geojsonMarkerOptions = {
// radius: 6,
// fillColor: "#ff7800",
// color: "#ff7800",
// weight: 4,
// opacity: 1,
// fillOpacity: 0.8
// };*/
// var start = Date.now();
// $("#infoBanner").html("db data loading... ");
// $("#infoBanner").show();
// // $.getJSON("http://sit.cittametropolitana.na.it/riservato/prova.json", function(contents) {
// $.getJSON("./postgres2json.php?q=gisdb&tbl="+json.loadDb, function(contents) {
// var geojson = contents;
//
// if (! jQuery.isEmptyObject(lyrLoadedItem._layers)) {
// panelLayers.removeLayer({name:tempFileName ,layer: lyrLoadedItem});
// lyrLoadedItem.clearLayers();
// }
// console.log("db data loading... ");
// lyrLoadedItem.addData(geojson);
// // lyrLoadedItem.setStyle(geojsonMarkerOptions);
// if (Object.keys(lyrLoadedItem._layers).length > 2000) {
// $("#alertBanner").html("il numero di record ("+Object.keys(lyrLoadedItem._layers).length+") è eccessivo... il sistema potrebbe essere instabile o lento");
// $("#alertBanner").show();
// }
// lyrLoadedItem.eachLayer(function(eve){
// var jsnFeature = eve.feature;
// // eve.setStyle(geojsonMarkerOptions)
// })
//
// addToList(lyrLoadedItem);
// setActive();
//
// console.log("Layer ("+json.loadDb+") aggiunto");
// // addUrlButton();
// }).done(function() {
// console.log( "load success in ",Math.floor((Date.now()-start)/1000)," sec" );
// $("#infoBanner").html("caricamento in "+Math.floor((Date.now()-start)/1000)+" sec")
// setTimeout(function() { $("#infoBanner").hide(); }, 4000);
// });
// }
};
// ########################################################################à####
// ########################################################################à####
// ######################################################### NB: init_wms
function init_wms(){
var jsnLayers = jsnGlobalLayers;
if ( !$.isEmptyObject(jsnLayers)) {
var lyrList = jsnLayers;
$.each(lyrList,function( index,layer ) {
// console.log(layer)
if(layer.initial=="1") addWMS_(layer.workspace,layer.layerName,layer.layerDenom,layer.style,layer.maxzoom,layer.minzoom,layer.l_group,encodeURI(layer.metaURL),layer.descrizione,layer.l_group);
})
}
}
// ############################################################################
// ######################################################### NB: load_wms
function load_wms(layerDenom,style){
// var json = Globaljson.responseJSON;
var jsnLayers = jsnGlobalLayers;
if ( !$.isEmptyObject(jsnLayers)) {
var lyrList = jsnLayers;
$.each(lyrList,function( index,layer ) {
// console.log(layer)
if (layer.layerDenom==layerDenom) {
if (typeof style !== 'undefined') {
//if (layer.style==style) {
addWMS_(layer.workspace,layer.layerName,layer.layerDenom,style,layer.maxzoom,layer.minzoom,layer.l_group,encodeURI(layer.metaURL),layer.descrizione,layer.l_group);
//}
} else {
addWMS_(layer.workspace,layer.layerName,layer.layerDenom,"",layer.maxzoom,layer.minzoom,layer.l_group,encodeURI(layer.metaURL),layer.descrizione,layer.l_group);
}
};
})
}
}
// ############################################################################
// ######################################################### NB: loadTable
function loadTable_(){
jsnLoadedItem = lyrLoadedItem.toGeoJSON();
displayContents(jsnLoadedItem);
// table_control.toggle();
}
function loadTable(layerId){
resetFeature();
var start = Date.now();
$("#infoBanner").html("data loading... ");
$("#infoBanner").show();
var url = map._layers[layerId]._source._url;
var defaultParameters = {
service : 'WFS',
version : '2.0',
request : 'GetFeature',
typeName : map._layers[layerId]._name,
outputFormat : 'application/json',
SrsName : 'EPSG:4326'
};
var base_url = url.substring(0,(url.indexOf('?')-3));
console.log("4---> ",base_url);
//var owsrootUrl = "http://192.168.11.143:8081/geoserver/ows";
var owsrootUrl = base_url+"/ows"; // XXX cambia workspace
var parameters = L.Util.extend(defaultParameters);
var URL = owsrootUrl + L.Util.getParamString(parameters);
// console.log(URL)
// var WFSLayer = null;
var ajax = $.ajax({
url : URL,
dataType : 'json',
statusCode: {
400: function() {
alert( "Dato non disponibile" );
$("#infoBanner").hide();
}
},
success : function (response) {
$("#infoBanner").html("elaborazione... ");
$("#infoBanner").show();
fields = [];
if (!response || !response.geometry &&
(!response.features || !response.features.length)) {
} else {
lyrAttributi.clearLayers();
lyrAttributi.addData(response.features);
var _layers = response.features;
_layers.forEach(function(element,index){
// console.log(element,index)
element.properties.id = element.id;
// delete element.properties.bbox;
delete element.properties.shape_area;
delete element.properties.shape_len;
/* ###########################################################
############### TODO: inserire in tabella il comando zoomTo
var value = element.properties.bbox;
var bboxArray = [];
var p1 = turf.point([ value[0], value[1]]);
var converted1 = turf.toWgs84(p1);
bboxArray.push(turf.coordAll(converted1))
var p2 = turf.point([ value[2], value[3]]);
var converted2 = turf.toWgs84(p2);
bboxArray.push(turf.coordAll(converted2))
element.properties.bbox = "click per zoom";
*/
})
// lyrAttributi.setStyle(selectSTyleOption);
rows = response.geometry ? [response.properties] : response.features.map(getProperties); // dati in tabella
}
for( var j in rows[0] ) {
if (($.inArray(j, noFieldsArr )<0 ) && (j.charAt(0)!="_")) {
fields.push(j.replace(/ /g,"_")); // lista nome campi
}
}
var table_ = new Supagrid({
fields: fields,
id_field: "id", //((fields.indexOf("id")>0)?"id":fields[0]),
data: rows,
on: {
focus: function(obj) {
lyrAttributi.eachLayer(function(layer) {
layer.setStyle({color: '#3388ff'})
if (layer.feature.id===obj){
console.log("**table focus**: ",obj);
lyrSelectedItem.clearLayers()
lyrSelectedItem.addData(layer.toGeoJSON());
//if (feature.geometry.type!="Point") lyrSelectedItem.setStyle(selectSTyleOption);
lyrSelectedItem.setStyle({color :'tomato',weight: 3});
lyrSelectedItem.addTo(map)
}
});
}
}
})
// console.log("table_",table_)
var my_table = table_;
table_control.visibile = true;
table_control.addTo(map);
table_control.addTable(my_table.supagrid,'my_table','my_table');
$(table_control.getContainer()).appendTo(".leaflet-control-container:first");
table_control.on();
}
}).done(function() {
console.log( "load success");
// $("#infoBanner").html("caricamento in "+Math.floor((Date.now()-start)/1000)+" sec")
setTimeout(function() { $("#infoBanner").hide(); }, 1000);
});
}
function isJSON(str) {
if( typeof( str ) === 'number' ) {
return false;
}
try {
$.parseJSON(str);
return true,Object.keys(JSON.parse(str)).length;
} catch (e) {
return false;
}
}
// ############################################################################
// ######################################################### NB: addWMS
function addWMS(workspace,layerName,layerDenom,style,maxzoom, minzoom,group,metaURL,descrizione,legendGroup){
// console.log("metaURL",metaURL)
addWMS_(workspace,layerName,layerDenom,style,maxzoom, minzoom,group,metaURL,descrizione,legendGroup);
addLayerButton();
}
function addWMS_(workspace,layerName,layerDenom,style,maxzoom, minzoom,group,metaURL,descrizione,legendGroup){
var LDarray = layerDenom.split(",");
var ws = workspace.substr(workspace.indexOf('/')); // XXX cambia workspace
var LDstring = ws+":"+LDarray.join(","+ws+":");
//var url = "http://192.168.11.143:8081/geoserver/"+workspace+"/wms?service=WMS";
// var url = "./geoserver/"+workspace+"/wms?service=WMS";
var url = "https://sit.cittametropolitana.na.it/"+workspace+"/wms?service=WMS"; // XXX cambia workspace
//console.log("2--->", url)
// var url = "http://192.168.11.144:8080/geoserver/"+workspace+"/wms?service=WMS";
var options = {
"format": "image/png", "transparent": true,
"version": "1.3.0",
"info_format": "application/json",
"styles": style,
"maxZoom":maxzoom,
"minZoom":minzoom,
"opacity": 0.8,
"tiled": '',
"tileSize": 512,
"metaURL": metaURL,
"attribution": "SIT - Città Metro Napoli",
"feature_count": 10,
"identify": true
};
L.WMS.Source = L.WMS.Source.extend({
'ajax': function(url, callback) {
$.ajax(url, {
//'context': this,
'success': function(result) {
// callback.call(this, result);
var json = Globaljson.responseJSON;
console.log("---->>>", this,result)
if (typeof result.features !== 'undefined' && result.features.length > 0 && !globalEdit) {
htmlID += "
" + layerName + " " + descrizione + "
";
$.each(result.features, function (index, my_ris) {
// if (result.features.length > 1) htmlID += "
" + layerName + "
";
htmlID += "
";
var ris = my_ris.properties;
var geom = my_ris;
$.each(ris,function( index,value ) {
var testo = value?value.toString():"";
testo = testo.replaceAll('\"','');
if ((testo.substring(0,4)=="https") || (testo.substring(0,4)=="http")) {
if ((testo.split("/")[2]=="sit.cittametropolitana.na.it") || (testo.split("/")[2]=="sit.provincia.napoli.it")) {
value = "click per aprire";
} else {
value = "click per aprire";
};
};
if (isJSON(testo)>0) {
console.log("json --->")
var m =JSON.parse(value)
// The result can be accessed through the `m`-variable.
var html = "
"
$.each(m, function(i, val) {
html += "
"+i+"
"+val+"
";
});
html += "
"
value = html;
}
if (index=="bbox") {
var bboxArray = [];
var p1 = turf.point([ value[0], value[1]]);
var converted1 = turf.toWgs84(p1);
bboxArray.push(turf.coordAll(converted1))
var p2 = turf.point([ value[2], value[3]]);
var converted2 = turf.toWgs84(p2);
bboxArray.push(turf.coordAll(converted2))
value = "click per zoom";
}
if (! noFieldsArr.includes(index)) htmlID += '
'+index+'
'+value+'
';
})
htmlID += '
';
if ((typeof lyrLoadedItem === "undefined")) lyrSelectedItem.clearLayers();
if ((typeof lyrLoadedItem !== "undefined") && lyrLoadedItem.pm.enabled()) {}
else {
// console.log("prova", map.identifyOn)
if (globalSelect==true ) {
if (workspace+":"+layerDenom===globalActive.name) {
$("#results div").html("nessun dato da visualizzare");
lyrSelectedItem.addData(turf.toWgs84(geom));
lyrSelectedItem.bringToFront();
lyrSelectedItem.setStyle(selectSTyleOption);
//if (geom.geometry.type!="Point") lyrSelectedItem.setStyle(selectSTyleOption);
lyrSelectedItem.addTo(map);
attivaBottoni();
console.log("Feature selezionate: ",Object.keys(lyrSelectedItem._layers).length, " di ", layerDenom)
}
}
if (map.identifyOn) {
$("#results div").empty();
$("#results div").html(htmlID);
sidebar.open("results");
lyrSelected.addData(turf.toWgs84(geom));
lyrSelected.bringToFront();
if (geom.geometry.type!="Point") lyrSelected.setStyle(selectedStyleOption);
lyrSelected.addTo(map);
}
}
})
}
}
});
}
});
var source = L.WMS.source(url, options);
var wmsLayers = source.getLayer(LDstring);
wmsLayers.addTo(map);
//panelLayers.addOverlay({ active: true, name: layerName, layer: wmsLayers });
if (legendGroup== undefined) legendGroup="";
// panelLayers.addOverlay({layer:wmsLayers,descrizione: descrizione,legendGroup:legendGroup,layerDenom:LDstring},layerName,group); XXX: attenzione
panelLayers.addOverlay({layer:wmsLayers,descrizione: descrizione,legendGroup:legendGroup,layerDenom:LDstring},layerName,group);
setActive();
// console.log("group group group", group);
console.log("Layer ("+workspace+": "+layerName+") aggiunto");
//SetZIndexByTitle(wmsLayers._leaflet_id)
}
function attivaBottoni(){
$("#infoBanner").html("Feature selezionate: " + Object.keys(lyrSelectedItem._layers).length)
$("#infoBanner").show();
list.showButton(0);
list.showButton(1);
setTimeout(function() { $("#infoBanner").hide(); }, 4000);
}
// #############################################################################
// ########################################################## NB: listaAttributi
function listaAttributi(layerId){
var start = Date.now();
$("#infoBanner").html("data loading... ");
$("#infoBanner").show();
var url = map._layers[layerId]._source._url;
var defaultParameters = {
service : 'WFS',
version : '2.0',
request : 'GetFeature',
typeName : map._layers[layerId]._name,
outputFormat : 'application/json',
SrsName : 'EPSG:4326'
};
var base_url = url.substring(0,(url.indexOf('?')-3));
console.log("4---> ",base_url);
//var owsrootUrl = "http://192.168.11.143:8081/geoserver/ows";
var owsrootUrl = base_url+"/ows"; // TODO -----
var parameters = L.Util.extend(defaultParameters);
var URL = owsrootUrl + L.Util.getParamString(parameters);
// console.log(URL)
// var WFSLayer = null;
var ajax = $.ajax({
url : URL,
dataType : 'json',
statusCode: {
400: function() {
alert( "Dato non disponibile" );
$("#infoBanner").hide();
}
},
success : function (response) {
$("#infoBanner").html("elaborazione... ");
$("#infoBanner").show();
fields = [];
if (!response || !response.geometry &&
(!response.features || !response.features.length)) {
} else {
lyrAttributi.clearLayers();
lyrAttributi.addData(response.features);
var _layers = response.features;
_layers.forEach(function(element,index){
element.properties.id = element.id;
})
// lyrAttributi.setStyle(selectSTyleOption);
rows = response.geometry ? [response.properties] : response.features.map(getProperties); // dati in tabella
fields = [];
for( var j in rows[0] ) {
console.log(j,($.inArray(j, noFieldsArr )<0 ) ,(j.charAt(0)!="_"))
if (($.inArray(j, noFieldsArr )<0 ) && (j.charAt(0)!="_")) fields.push(j); // lista nome campi
}
//console.log( "fields: ",fields);
//console.log( "rows: ",rows);
html = "
ricerca per attributi
";
html += '';
html += '
Selezione in base a più parametri:
';
// $("#results div").empty();
$("#results div.sidebar-body").html(html)
sidebar.open("results");
}
}
}).done(function() {
console.log( "load success");
// $("#infoBanner").html("caricamento in "+Math.floor((Date.now()-start)/1000)+" sec")
setTimeout(function() { $("#infoBanner").hide(); }, 1000);
});
}
function cerca(){
var unindexed_array = $("#cercaAttributi").serializeArray();
var indexed_array = {};
$.map(unindexed_array, function(n, i){
if (n['value']!='') indexed_array[n['name']] = n['value'];
});
function filterBy(list, criteria) {
return list.filter(candidate =>
Object.keys(criteria).every(key =>
candidate[key] == criteria[key]
)
);
}
var layers = lyrAttributi._layers;
var data_array = [];
var lyr_array = [];
$.each(layers, function(i,v){
v.feature.properties.e = v.feature
data_array.push(v.feature.properties);
lyr_array.push(v.feature);
})
var lyrArray = filterBy(data_array,indexed_array);
lyrSelectedItem.clearLayers();
var numOfResults = lyrArray.length;
$.each(lyrArray, function(i,v){
var json = v.e;
delete v.e;
lyrSelectedItem.addData(json);
})
attivaBottoni();
lyrSelectedItem.addTo(map);
lyrSelectedItem.setStyle(selectSTyleOption);
$("#zoomtoresult").remove();
$("#results div.sidebar-body").append("
ci sono "+numOfResults+" risultati:
");
console.log("fatto!")
};
// #############################################################################
// ############################################################## NB: setActive
function setActive(){
$("div.leaflet-panel-layers-overlays > div.leaflet-panel-layers-group > div.leaflet-panel-layers-item > div").bind('contextmenu', function(e) {
e.preventDefault();
});
$("div.leaflet-panel-layers-overlays > div.leaflet-panel-layers-group > div.leaflet-panel-layers-item > div").on('contextmenu', function(e) {
if (e.ctrlKey) {
//alert("Ctrl")
return;
}
var top = e.pageY - 10;
var left = e.pageX - 90;
var layerName = $(this).html();
var layerId = $(this)[0].id;
var metadato; //console.log("rigo 741: ",map._layers[layerId])
if (map._layers[layerId]._source!=undefined) {
var url = map._layers[layerId]._source._url+"&request=GetCapabilities&INFO_FORMAT=application/json"+"&layer="+ map._layers[layerId]._name;
var xmlCapabylity = $.ajax({
url: url,
async: false
}).responseText;
var jsonCapabilities = new WMSCapabilities().parse(xmlCapabylity);
var extent = [];
//$("div.leaflet-panel-layers-overlays > div.leaflet-panel-layers-group > div.leaflet-panel-layers-item > span").css("font-weight", (globalActive.id == layerId?"bold":"normal"));
//if (globalActive.id == layerId) setTimeout(function(){ $(this).css("font-weight", "bold"); }, 100);
// console.log("rigo 762: ",jsonCapabilities.Capability.Layer.Layer)
$(jsonCapabilities.Capability.Layer.Layer).map(function() {
var nomeLayer = map._layers[layerId]._name;
var resultString = nomeLayer.replace( /^[^:]*:/, "");
if (this.Name == resultString) {
extent = this.EX_GeographicBoundingBox;
this.metaURL = map._layers[layerId]._source.options.metaURL;
metadato = JSON.stringify(this);
}
})
$("#context-menu").html('