1337 lines
70 KiB
JavaScript
1337 lines
70 KiB
JavaScript
|
(function defineMustache(global,factory){if(typeof exports==="object"&&exports&&typeof exports.nodeName!=="string"){factory(exports)}else if(typeof define==="function"&&define.amd){define(["exports"],factory)}else{global.Mustache={};factory(global.Mustache)}})(this,function mustacheFactory(mustache){var objectToString=Object.prototype.toString;var isArray=Array.isArray||function isArrayPolyfill(object){return objectToString.call(object)==="[object Array]"};function isFunction(object){return typeof object==="function"}function typeStr(obj){return isArray(obj)?"array":typeof obj}function escapeRegExp(string){return string.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function hasProperty(obj,propName){return obj!=null&&typeof obj==="object"&&propName in obj}var regExpTest=RegExp.prototype.test;function testRegExp(re,string){return regExpTest.call(re,string)}var nonSpaceRe=/\S/;function isWhitespace(string){return!testRegExp(nonSpaceRe,string)}var entityMap={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/","`":"`","=":"="};function escapeHtml(string){return String(string).replace(/[&<>"'`=\/]/g,function fromEntityMap(s){return entityMap[s]})}var whiteRe=/\s*/;var spaceRe=/\s+/;var equalsRe=/\s*=/;var curlyRe=/\s*\}/;var tagRe=/#|\^|\/|>|\{|&|=|!/;function parseTemplate(template,tags){if(!template)return[];var sections=[];var tokens=[];var spaces=[];var hasTag=false;var nonSpace=false;function stripSpace(){if(hasTag&&!nonSpace){while(spaces.length)delete tokens[spaces.pop()]}else{spaces=[]}hasTag=false;nonSpace=false}var openingTagRe,closingTagRe,closingCurlyRe;function compileTags(tagsToCompile){if(typeof tagsToCompile==="string")tagsToCompile=tagsToCompile.split(spaceRe,2);if(!isArray(tagsToCompile)||tagsToCompile.length!==2)throw new Error("Invalid tags: "+tagsToCompile);openingTagRe=new RegExp(escapeRegExp(tagsToCompile[0])+"\\s*");closingTagRe=new RegExp("\\s*"+escapeRegExp(tagsToCompile[1]));closingCurlyRe=new RegExp("\\s*"+escapeRegExp("}"+tagsToCompile[1]))}compileTags(tags||mustache.tags);var scanner=new Scanner(template);var start,type,value,chr,token,openSection;while(!scanner.eos()){start=scanner.pos;value=scanner.scanUntil(openingTagRe);if(value){for(var i=0,valueLength=value.length;i<valueLength;++i){chr=value.charAt(i);if(isWhitespace(chr)){spaces.push(tokens.length)}else{nonSpace=true}tokens.push(["text",chr,start,start+1]);start+=1;if(chr==="\n")stripSpace()}}if(!scanner.scan(openingTagRe))break;hasTag=true;type=scanner.scan(tagRe)||"name";scanner.scan(whiteRe);if(type==="="){value=scanner.scanUntil(equalsRe);scanner.scan(equalsRe);scanner.scanUntil(closingTagRe)}else if(type==="{"){value=scanner.scanUntil(closingCurlyRe);scanner.scan(curlyRe);scanner.scanUntil(closingTagRe);type="&"}else{value=scanner.scanUntil(closingTagRe)}if(!scanner.scan(closingTagRe))throw new Error("Unclosed tag at "+scanner.pos);token=[type,value,start,scanner.pos];tokens.push(token);if(type==="#"||type==="^"){sections.push(token)}else if(type==="/"){openSection=sections.pop();if(!openSection)throw new Error('Unopened section "'+value+'" at '+start);if(openSection[1]!==value)throw new Error('Unclosed section "'+openSection[1]+'" at '+start)}else if(type==="name"||type==="{"||type==="&"){nonSpace=true}else if(type==="="){compileTags(value)}}openSection=sections.pop();if(openSection)throw new Error('Unclosed section "'+openSection[1]+'" at '+scanner.pos);return nestTokens(squashTokens(tokens))}function squashTokens(tokens){var squashedTokens=[];var token,lastToken;for(var i=0,numTokens=tokens.length;i<numTokens;++i){token=tokens[i];if(token){if(token[0]==="text"&&lastToken&&lastToken[0]==="text"){lastToken[1]+=token[1];lastToken[3]=token[3]}else{squashedTokens.push(token);lastToken=token}}}return squashedTokens}function nestTokens(tokens){var nestedTokens=[];var collector=nestedTokens;var sections=[];var token,section;for(var i=0,numTokens=tokens.length;i<numTokens;++i){token=tokens[i];switch(token[0]){case"#":case"^":collector.push(token);sections.push(token);collector=token[4]=[];break;case"/":sectio
|
||
|
|
||
|
// Underscore.js 1.8.3
|
||
|
// http://underscorejs.org
|
||
|
// (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
|
||
|
// Underscore may be freely distributed under the MIT license.
|
||
|
(function(){function n(n){function t(t,r,e,u,i,o){for(;i>=0&&o>i;i+=n){var a=u?u[i]:i;e=r(e,t[a],a,t)}return e}return function(r,e,u,i){e=b(e,i,4);var o=!k(r)&&m.keys(r),a=(o||r).length,c=n>0?0:a-1;return arguments.length<3&&(u=r[o?o[c]:c],c+=n),t(r,e,u,o,c,a)}}function t(n){return function(t,r,e){r=x(r,e);for(var u=O(t),i=n>0?0:u-1;i>=0&&u>i;i+=n)if(r(t[i],i,t))return i;return-1}}function r(n,t,r){return function(e,u,i){var o=0,a=O(e);if("number"==typeof i)n>0?o=i>=0?i:Math.max(i+a,o):a=i>=0?Math.min(i+1,a):i+a+1;else if(r&&i&&a)return i=r(e,u),e[i]===u?i:-1;if(u!==u)return i=t(l.call(e,o,a),m.isNaN),i>=0?i+o:-1;for(i=n>0?o:a-1;i>=0&&a>i;i+=n)if(e[i]===u)return i;return-1}}function e(n,t){var r=I.length,e=n.constructor,u=m.isFunction(e)&&e.prototype||a,i="constructor";for(m.has(n,i)&&!m.contains(t,i)&&t.push(i);r--;)i=I[r],i in n&&n[i]!==u[i]&&!m.contains(t,i)&&t.push(i)}var u=this,i=u._,o=Array.prototype,a=Object.prototype,c=Function.prototype,f=o.push,l=o.slice,s=a.toString,p=a.hasOwnProperty,h=Array.isArray,v=Object.keys,g=c.bind,y=Object.create,d=function(){},m=function(n){return n instanceof m?n:this instanceof m?void(this._wrapped=n):new m(n)};"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=m),exports._=m):u._=m,m.VERSION="1.8.3";var b=function(n,t,r){if(t===void 0)return n;switch(null==r?3:r){case 1:return function(r){return n.call(t,r)};case 2:return function(r,e){return n.call(t,r,e)};case 3:return function(r,e,u){return n.call(t,r,e,u)};case 4:return function(r,e,u,i){return n.call(t,r,e,u,i)}}return function(){return n.apply(t,arguments)}},x=function(n,t,r){return null==n?m.identity:m.isFunction(n)?b(n,t,r):m.isObject(n)?m.matcher(n):m.property(n)};m.iteratee=function(n,t){return x(n,t,1/0)};var _=function(n,t){return function(r){var e=arguments.length;if(2>e||null==r)return r;for(var u=1;e>u;u++)for(var i=arguments[u],o=n(i),a=o.length,c=0;a>c;c++){var f=o[c];t&&r[f]!==void 0||(r[f]=i[f])}return r}},j=function(n){if(!m.isObject(n))return{};if(y)return y(n);d.prototype=n;var t=new d;return d.prototype=null,t},w=function(n){return function(t){return null==t?void 0:t[n]}},A=Math.pow(2,53)-1,O=w("length"),k=function(n){var t=O(n);return"number"==typeof t&&t>=0&&A>=t};m.each=m.forEach=function(n,t,r){t=b(t,r);var e,u;if(k(n))for(e=0,u=n.length;u>e;e++)t(n[e],e,n);else{var i=m.keys(n);for(e=0,u=i.length;u>e;e++)t(n[i[e]],i[e],n)}return n},m.map=m.collect=function(n,t,r){t=x(t,r);for(var e=!k(n)&&m.keys(n),u=(e||n).length,i=Array(u),o=0;u>o;o++){var a=e?e[o]:o;i[o]=t(n[a],a,n)}return i},m.reduce=m.foldl=m.inject=n(1),m.reduceRight=m.foldr=n(-1),m.find=m.detect=function(n,t,r){var e;return e=k(n)?m.findIndex(n,t,r):m.findKey(n,t,r),e!==void 0&&e!==-1?n[e]:void 0},m.filter=m.select=function(n,t,r){var e=[];return t=x(t,r),m.each(n,function(n,r,u){t(n,r,u)&&e.push(n)}),e},m.reject=function(n,t,r){return m.filter(n,m.negate(x(t)),r)},m.every=m.all=function(n,t,r){t=x(t,r);for(var e=!k(n)&&m.keys(n),u=(e||n).length,i=0;u>i;i++){var o=e?e[i]:i;if(!t(n[o],o,n))return!1}return!0},m.some=m.any=function(n,t,r){t=x(t,r);for(var e=!k(n)&&m.keys(n),u=(e||n).length,i=0;u>i;i++){var o=e?e[i]:i;if(t(n[o],o,n))return!0}return!1},m.contains=m.includes=m.include=function(n,t,r,e){return k(n)||(n=m.values(n)),("number"!=typeof r||e)&&(r=0),m.indexOf(n,t,r)>=0},m.invoke=function(n,t){var r=l.call(arguments,2),e=m.isFunction(t);return m.map(n,function(n){var u=e?t:n[t];return null==u?u:u.apply(n,r)})},m.pluck=function(n,t){return m.map(n,m.property(t))},m.where=function(n,t){return m.filter(n,m.matcher(t))},m.findWhere=function(n,t){return m.find(n,m.matcher(t))},m.max=function(n,t,r){var e,u,i=-1/0,o=-1/0;if(null==t&&null!=n){n=k(n)?n:m.values(n);for(var a=0,c=n.length;c>a;a++)e=n[a],e>i&&(i=e)}else t=x(t,r),m.each(n,function(n,r,e){u=t(n,r,e),(u>o||u===-1/0&&i===-1/0)&&(i=n,o=u)});return i},m.min=function(n,t,r){var e,u,i=1/0,o=1/0;if(null==t&&null!=n){n=k(n)?n:m.values(n);for(var a=0,c=n.length;c>a;a++)e=n[a],i>e&&(i=e)}else t=x(t,r),m.each(n,function(n,r,e){u=t(n,r,e),(o>u||1/0===u&&
|
||
|
//# sourceMappingURL=underscore-min.map
|
||
|
var legend = new Array();
|
||
|
var activeLayers = new Array();
|
||
|
var show_active_layers_flag = true;
|
||
|
function toWKT(layer) {
|
||
|
var lng, lat, coords = [];
|
||
|
if (layer instanceof L.Polygon || layer instanceof L.Polyline) {
|
||
|
var latlngs = layer.getLatLngs();
|
||
|
for (var i = 0; i < latlngs.length; i++) {
|
||
|
latlngs[i]
|
||
|
coords.push(latlngs[i].lng + " " + latlngs[i].lat);
|
||
|
if (i === 0) {
|
||
|
lng = latlngs[i].lng;
|
||
|
lat = latlngs[i].lat;
|
||
|
}
|
||
|
}
|
||
|
;
|
||
|
if (layer instanceof L.Polygon) {
|
||
|
return "POLYGON((" + coords.join(",") + "," + lng + " " + lat + "))";
|
||
|
} else if (layer instanceof L.Polyline) {
|
||
|
return "LINESTRING(" + coords.join(",") + ")";
|
||
|
}
|
||
|
} else if (layer instanceof L.Marker) {
|
||
|
return "POINT(" + layer.getLatLng().lng + " " + layer.getLatLng().lat + ")";
|
||
|
}
|
||
|
}
|
||
|
|
||
|
jQuery(document).ready(function () {
|
||
|
L.TileLayer.BetterWMS = L.TileLayer.WMS.extend({
|
||
|
|
||
|
onAdd: function (map) {
|
||
|
// Triggered when the layer is added to a map.
|
||
|
// Register a click listener, then do all the upstream WMS things
|
||
|
L.TileLayer.WMS.prototype.onAdd.call(this, map);
|
||
|
map.on('click', this.getFeatureInfo, this);
|
||
|
},
|
||
|
|
||
|
onRemove: function (map) {
|
||
|
// Triggered when the layer is removed from a map.
|
||
|
// Unregister a click listener, then do all the upstream WMS things
|
||
|
L.TileLayer.WMS.prototype.onRemove.call(this, map);
|
||
|
map.off('click', this.getFeatureInfo, this);
|
||
|
},
|
||
|
|
||
|
getFeatureInfo: function (evt) {
|
||
|
|
||
|
// Make an AJAX request to the server and hope for the best
|
||
|
var url = this.getFeatureInfoUrl(evt.latlng),
|
||
|
showResults = L.Util.bind(this.showGetFeatureInfo, this);
|
||
|
$.ajax({
|
||
|
url: url,
|
||
|
success: function (data, status, xhr) {
|
||
|
var err = typeof data === 'string' ? null : data;
|
||
|
showResults(err, evt.latlng, data);
|
||
|
},
|
||
|
error: function (xhr, status, error) {
|
||
|
showResults(error);
|
||
|
}
|
||
|
});
|
||
|
},
|
||
|
|
||
|
getFeatureInfoUrl: function (latlng) {
|
||
|
//console.log(this.wmsParams.srs1);
|
||
|
// Construct a GetFeatureInfo request URL given a point
|
||
|
var point = this._map.latLngToContainerPoint(latlng, this._map.getZoom()),
|
||
|
size = this._map.getSize();
|
||
|
var ltype = this.wmsParams.layer_type;
|
||
|
|
||
|
var format = "application/json";
|
||
|
if (ltype == 4) {
|
||
|
format = "text/html";
|
||
|
}
|
||
|
var params = {
|
||
|
request: 'GetFeatureInfo',
|
||
|
service: 'WMS',
|
||
|
//srs: this.wmsParams.srs1,
|
||
|
srs: 'EPSG:4326',
|
||
|
styles: this.wmsParams.styles,
|
||
|
transparent: this.wmsParams.transparent,
|
||
|
version: this.wmsParams.version,
|
||
|
format: this.wmsParams.format,
|
||
|
// bbox: this._map.getBounds().toBBoxString(),
|
||
|
height: size.y,
|
||
|
width: size.x,
|
||
|
layers: this.wmsParams.layers,
|
||
|
query_layers: this.wmsParams.layers,
|
||
|
info_format: format
|
||
|
};
|
||
|
|
||
|
params[params.version === '1.3.0' ? 'i' : 'x'] = point.x;
|
||
|
params[params.version === '1.3.0' ? 'j' : 'y'] = point.y;
|
||
|
|
||
|
return this._url + L.Util.getParamString(params, this._url, true);
|
||
|
},
|
||
|
|
||
|
showGetFeatureInfo: function (err, latlng, content) {
|
||
|
// console.log(err);
|
||
|
// console.log(this.wmsParams.keyname);
|
||
|
// don't open again....
|
||
|
// if (err) {
|
||
|
// console.log(err);
|
||
|
// return;
|
||
|
// } // do nothing if there's an error
|
||
|
// console.log(content);
|
||
|
|
||
|
console.log(content);
|
||
|
|
||
|
var index = getIndex(selectedLayers, 'unique_id', this.wmsParams.unique_id);
|
||
|
var popupContent = "";
|
||
|
|
||
|
if (selectedLayers[index].type == 1) {
|
||
|
if (!content.features || content.features.length == 0) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
popupContent = getPopupContent(content, selectedLayers[index].pc);
|
||
|
|
||
|
} else {
|
||
|
|
||
|
if (jQuery(content).find("tr").length < 2) {
|
||
|
return;
|
||
|
}
|
||
|
popupContent = content;
|
||
|
}
|
||
|
// Otherwise show the content in a popup, or something.
|
||
|
L.popup({maxWidth: 'auto'})
|
||
|
.setLatLng(latlng)
|
||
|
.setContent(popupContent)
|
||
|
.openOn(this._map);
|
||
|
|
||
|
// if (selectedLayers[index].type == 4) {
|
||
|
// $('.leaflet-popup-content-wrapper').find('table').addClass("table");
|
||
|
// }
|
||
|
}
|
||
|
});
|
||
|
|
||
|
L.tileLayer.betterWms = function (url, options) {
|
||
|
return new L.TileLayer.BetterWMS(url, options);
|
||
|
};
|
||
|
|
||
|
L.Icon.Default.imagePath = baseURL + "/assets/plugins/leaflet/images";
|
||
|
L.AwesomeMarkers.Icon.prototype.options.prefix = 'fa';
|
||
|
})
|
||
|
function renderLayer(t, data) {
|
||
|
|
||
|
if (typeof featureGroup[t.unique_id] == "undefined") {
|
||
|
featureGroup[t.unique_id] = new Array();
|
||
|
}
|
||
|
|
||
|
if (t.type == 2 && (typeof t.cluster != "undefined" && t.cluster == 1)) {
|
||
|
featureGroup[t.unique_id][t.name] = new L.MarkerClusterGroup();
|
||
|
} else {
|
||
|
featureGroup[t.unique_id][t.name] = new L.FeatureGroup();
|
||
|
}
|
||
|
console.log(t.settings);
|
||
|
if (typeof t.settings != "undefined") {
|
||
|
if (t.settings.active == 1) {
|
||
|
add_current_layer_text(t);
|
||
|
featureGroup[t.unique_id][t.name].addTo(mymap);
|
||
|
} else {
|
||
|
t.settings.active = 0;
|
||
|
}
|
||
|
} else {
|
||
|
featureGroup[t.unique_id][t.name].addTo(mymap);
|
||
|
t.settings = new Object;
|
||
|
t.settings.active = 1;
|
||
|
}
|
||
|
|
||
|
if (t.settings.active == 1) {
|
||
|
activeLayers.push({id: t._id, order: 0});
|
||
|
order_current_active_layers();
|
||
|
}
|
||
|
|
||
|
if (typeof page != "undefined" && page == "phantom") {
|
||
|
console.log("added" + t._id);
|
||
|
if ($.inArray(t._id, active_ids) !== -1) {
|
||
|
// console.log(t.settings.active);
|
||
|
// if(t.settings.active == 0){
|
||
|
console.log("added");
|
||
|
featureGroup[t.unique_id][t.name].addTo(mymap);
|
||
|
|
||
|
//}
|
||
|
} else if (t.settings.active == 1) {
|
||
|
console.log("not added");
|
||
|
mymap.removeLayer(featureGroup[t.unique_id][t.name]);
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
if (typeof page != "undefined" && page == "user_farm") {
|
||
|
|
||
|
if (t.settings.active == 1 && show_active_layers_flag == true) {
|
||
|
jQuery('#chk_' + t.unique_id).prop("checked", "checked");
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (typeof page != "undefined" && page == "manage" && show_active_layers_flag == true) {
|
||
|
|
||
|
//jQuery('#active-layers-container').append(Mustache.render(tmpl.activeLayer, t));
|
||
|
jQuery('#active-layers-container .media-list').append(Mustache.render(tmpl.activeLayer, {t: t, type: layerType[t.type]}));
|
||
|
if (t.settings.active == 0) {
|
||
|
jQuery('#at-' + t.unique_id + " a.dropdown-toggle span").addClass("label-danger").removeClass("label-primary");
|
||
|
}
|
||
|
|
||
|
jQuery('.help-active-popup-hover').popover({
|
||
|
title: 'Active & In-Active',
|
||
|
content: '<div class="row"><div class="col-md-12"><p>This feature allows you to initially hide a layer. This can be used to achieve a desired layer presentation as well as to provide faster map loading for larger layers.</p></div></div>',
|
||
|
html: true,
|
||
|
trigger: 'hover',
|
||
|
container: 'body'
|
||
|
});
|
||
|
|
||
|
jQuery('.at_active_chk').bootstrapSwitch({
|
||
|
size: 'mini',
|
||
|
onSwitchChange: function (event, state) {
|
||
|
event.preventDefault();
|
||
|
var self = jQuery(this).parents(".active-layer-action:first");
|
||
|
var key = self.attr("data-id");
|
||
|
var index = getIndex(selectedLayers, 'unique_id', key);
|
||
|
|
||
|
if (!selectedLayers[index].settings && typeof selectedLayers[index].settings == "undefined") {
|
||
|
selectedLayers[index].settings = new Object;
|
||
|
}
|
||
|
|
||
|
update_dirty(index);
|
||
|
|
||
|
if (state === true) {
|
||
|
selectedLayers[index].settings.active = 1;
|
||
|
jQuery('#at-' + t.unique_id + " a.dropdown-toggle span").removeClass("label-danger").addClass("label-primary");
|
||
|
mymap.addLayer(featureGroup[key][selectedLayers[index].name]);
|
||
|
} else {
|
||
|
selectedLayers[index].settings.active = 0;
|
||
|
jQuery('#at-' + t.unique_id + " a.dropdown-toggle span").addClass("label-danger").removeClass("label-primary");
|
||
|
mymap.removeLayer(featureGroup[key][selectedLayers[index].name]);
|
||
|
}
|
||
|
calculateBounds();
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
|
||
|
if (t.type == 1 || t.type == 4) {
|
||
|
|
||
|
// L.imageOverlay('http://services.sentinel-hub.com/v1/wms/1977e8da-981e-447b-9f45-876336853164?SERVICE=WMS&REQUEST=GetMap&MAXCC=100&SRS=CRS:84&LAYERS=VEGETATION_INDEX&WIDTH=1141&HEIGHT=600&COLCOR=,BOOST&FORMAT=image/jpeg&BGCOLOR=00000000&TRANSPARENT=1&TIME=2015-01-01/2016-12-04&BBOX=31.86337271,-25.58553214,31.92626005,-25.55247732&GEOMETRY=POLYGON%28%2831.86501197235643%20-25.552477323857563,31.86337270813486%20-25.564976812169963,31.866014590158265%20-25.565714510820147,31.86637945987775%20-25.566359976486257,31.86634960957168%20-25.566972492232132,31.866314735384275%20-25.567069146264945,31.86628018302301%20-25.567197997023754,31.8660717242862%20-25.56784185437009,31.86603721621925%20-25.567970549041522,31.86579847109656%20-25.569127641679255,31.865728265045835%20-25.5692560707222,31.86521915498914%20-25.569470655598835,31.864963139386557%20-25.570045740273795,31.86492153624839%20-25.570699113585093,31.864864465054946%20-25.572219530020224,31.86513680151194%20-25.573523146724966,31.86593214730313%20-25.574992044206205,31.86768405924886%20-25.575919426212707,31.86979657229066%20-25.575715805214962,31.87133132314888%20-25.57577734584977,31.87282582024432%20-25.57555223276595,31.873941937061705%20-25.57524284976536,31.87508945824082%20-25.574888979398064,31.8767961971982%20-25.575014487828785,31.87887319114594%20-25.568987092446744,31.90660330293984%20-25.575217674743918,31.900480916710546%20-25.581002937467453,31.9200238144976%20-25.585532135993283,31.92626004605639%20-25.5706509773005,31.86501197235643%20-25.552477323857563%29%29', [[31.86337271,-25.58553214],[31.92626005,-25.55247732]])
|
||
|
// .addTo(featureGroup[t.unique_id][t.name]);
|
||
|
// console.log(t.SRS);
|
||
|
var options = {
|
||
|
format: 'image/png',
|
||
|
layers: t.Name,
|
||
|
transparent: true,
|
||
|
crs: L.CRS.EPSG4326,
|
||
|
unique_id: t.unique_id,
|
||
|
srs1: t.SRS,
|
||
|
layer_type: t.type
|
||
|
};
|
||
|
|
||
|
if (typeof t.geometry_area != "undefined") {
|
||
|
options.geometry = t.geometry_area;
|
||
|
}
|
||
|
|
||
|
if (typeof t.time != "undefined") {
|
||
|
options.time = t.time;
|
||
|
}
|
||
|
|
||
|
L.tileLayer.betterWms(t.url, options).addTo(featureGroup[t.unique_id][t.name]);
|
||
|
|
||
|
} else if (t.type == 2) {
|
||
|
//check data is coming
|
||
|
if (data == "") {
|
||
|
if (page == "phantom") {
|
||
|
filterGlobalData();
|
||
|
|
||
|
} else {
|
||
|
if (!t.cache_timer && typeof t.cache_timer == "undefined") {
|
||
|
t.cache_timer = 15;
|
||
|
}
|
||
|
data = {
|
||
|
datasource: t.connection_id,
|
||
|
sql_layer_name: t.name,
|
||
|
"query_box": t.query,
|
||
|
"_token": jQuery('[name="_token"]').val(),
|
||
|
"cache_key": t.cache_key,
|
||
|
"cache_timer": t.cache_timer,
|
||
|
"type": 2,
|
||
|
"map_id": map.id
|
||
|
};
|
||
|
|
||
|
ajaxRequest('map/layer/json', 'post', 'json', data, function (data) {
|
||
|
if (data.status == "200") {
|
||
|
processSQLJSON(data, t);
|
||
|
} else {
|
||
|
showMsg(data.status, data.msg);
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
} else {
|
||
|
processSQLJSON(data, t);
|
||
|
}
|
||
|
} else if (t.type == 3) {
|
||
|
|
||
|
}
|
||
|
|
||
|
overlayers_controls(t);
|
||
|
overlays[t.name] = featureGroup[t.unique_id][t.name];
|
||
|
layerSelector.addOverlay(featureGroup[t.unique_id][t.name], t.name);
|
||
|
if (t.type == 3) {
|
||
|
jQuery('#at-' + t.unique_id).find('.style-at-layer').remove();
|
||
|
}
|
||
|
calculateBounds();
|
||
|
}
|
||
|
|
||
|
|
||
|
function getPopupContent(content, defined_content) {
|
||
|
// var featuresHTML = defined_content;
|
||
|
|
||
|
$.each(content.features, function (key, feature) {
|
||
|
|
||
|
//featuresHTML += '<div class="row"><div class="col-md-12"><h4>' + feature.id + '</h4><ul class="map-popup-feature-lists">';
|
||
|
$.each(feature.properties, function (key, value) {
|
||
|
defined_content = defined_content.replace("<" + key + ">", value);
|
||
|
//featuresHTML = '<li>' + key + ' : ' + value + '</li>';
|
||
|
});
|
||
|
//featuresHTML += "</ul></div></div>";
|
||
|
})
|
||
|
return defined_content;
|
||
|
}
|
||
|
|
||
|
|
||
|
function processSQLJSON(data, t) {
|
||
|
t = defaultLayerStyle(t);
|
||
|
if (data.more_data.sql_type == 3) {
|
||
|
processheatmapJSON(data, t);
|
||
|
} else {
|
||
|
clearLayersAndControls(data, t);
|
||
|
|
||
|
jQuery.each(data.result, function (name, json) {
|
||
|
L.geoJson(json, {
|
||
|
onEachFeature: function (feature, layer) {
|
||
|
if (layer instanceof L.Marker) {
|
||
|
var found = false;
|
||
|
if (t.style.type == "nr") {
|
||
|
|
||
|
|
||
|
$.each(t.style.custom, function (key, val) {
|
||
|
|
||
|
if (between(feature.properties[t.style.field], val.val)) {
|
||
|
found = true;
|
||
|
layer.setIcon(L.AwesomeMarkers.icon(val.style));
|
||
|
return false;
|
||
|
}
|
||
|
})
|
||
|
|
||
|
|
||
|
|
||
|
} else if (t.style.type == "g") {
|
||
|
|
||
|
|
||
|
$.each(t.style.custom, function (key, val) {
|
||
|
|
||
|
if (feature.properties[t.style.field] == val.val) {
|
||
|
found = true;
|
||
|
layer.setIcon(L.AwesomeMarkers.icon(val.style));
|
||
|
return false;
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
|
||
|
if (found == false) {
|
||
|
layer.setIcon(L.AwesomeMarkers.icon(t.style.marker));
|
||
|
}
|
||
|
}
|
||
|
// if (layer instanceof L.Marker) {
|
||
|
// layer.setIcon(L.AwesomeMarkers.icon(t.style.marker));
|
||
|
// }
|
||
|
layer.on('click', function (e) {
|
||
|
|
||
|
var c = getSQLPopupContent(feature.properties, t.pc);
|
||
|
layer.bindPopup(c);
|
||
|
|
||
|
// if (layer instanceof L.Marker) {
|
||
|
// var popup = L.popup();
|
||
|
// popup.setLatLng(layer.getLatLng());
|
||
|
// popup.setContent(c);
|
||
|
// mymap.openPopup(popup);
|
||
|
// } else {
|
||
|
// var bounds = layer.getBounds();
|
||
|
// var popup = L.popup();
|
||
|
// popup.setLatLng(bounds.getCenter());
|
||
|
// popup.setContent(c);
|
||
|
// mymap.openPopup(popup);
|
||
|
// }
|
||
|
|
||
|
})
|
||
|
},
|
||
|
style: function (feature, layer) {
|
||
|
return t.style.polygon;
|
||
|
}
|
||
|
}).addTo(featureGroup[t.unique_id][t.name]);
|
||
|
|
||
|
mymap.fitBounds(featureGroup[t.unique_id][t.name].getBounds());
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function initLayer() {
|
||
|
|
||
|
|
||
|
selectedLayers.sort(sort_value_layer);
|
||
|
|
||
|
if (selectedBaseLayers.length > 0) {
|
||
|
jQuery('#visiable-layers').find('.baselayers-control').removeClass("hide");
|
||
|
}
|
||
|
jQuery.each(selectedBaseLayers, function (key, value) {
|
||
|
|
||
|
layerSelector.addBaseLayer(baseLayers['mymap'][value.name], value.name);
|
||
|
baselayers_controls(value.name);
|
||
|
|
||
|
if (typeof page != "undefined" && page == "manage") {
|
||
|
//alert(page);
|
||
|
var ls = jQuery('#base_layer_selection').find('input:checkbox[data-name="' + value.name + '"]');
|
||
|
|
||
|
if (ls.length > 0) {
|
||
|
ls.prop("checked", "checked");
|
||
|
baseLayerMap(ls, false);
|
||
|
}
|
||
|
}
|
||
|
})
|
||
|
|
||
|
jQuery.each(selectedLayers, function (key, value) {
|
||
|
renderLayer(value, '');
|
||
|
})
|
||
|
|
||
|
//look for custom layers
|
||
|
var data = {
|
||
|
"type": 3,
|
||
|
"id": map.id,
|
||
|
"_token": jQuery('[name="_token"]').val(),
|
||
|
}
|
||
|
ajaxRequest('map/layer/json', 'post', 'json', data, function (data) {
|
||
|
|
||
|
if (data.status == "200") {
|
||
|
processFreeHand(data);
|
||
|
} else {
|
||
|
showMsg(data.status, data.msg);
|
||
|
}
|
||
|
});
|
||
|
|
||
|
|
||
|
}
|
||
|
|
||
|
function processFreeHand(cl) {
|
||
|
|
||
|
jQuery.each(cl.result, function (name, json) {
|
||
|
|
||
|
index = getIndex(selectedLayers, 'unique_id', name);
|
||
|
t = selectedLayers[index];
|
||
|
|
||
|
if (typeof featureGroup[t.unique_id] == "undefined") {
|
||
|
featureGroup[t.unique_id] = new Array();
|
||
|
}
|
||
|
featureGroup[t.unique_id][t.name] = new L.FeatureGroup();
|
||
|
|
||
|
if (typeof t.settings != "undefined") {
|
||
|
if (t.settings.active == 1) {
|
||
|
featureGroup[t.unique_id][t.name].addTo(mymap);
|
||
|
} else {
|
||
|
t.settings.active = 0;
|
||
|
}
|
||
|
} else {
|
||
|
featureGroup[t.unique_id][t.name].addTo(mymap);
|
||
|
t.settings = new Object;
|
||
|
t.settings.active = 1;
|
||
|
}
|
||
|
|
||
|
//featureGroup[t.unique_id][t.name].addTo(mymap);
|
||
|
L.geoJson(json, {
|
||
|
onEachFeature: function (feature, layer) {
|
||
|
|
||
|
selectedLayers[index].layer = layer;
|
||
|
|
||
|
if (t.settings.active == 1) {
|
||
|
drawingGroup.addLayer(layer);
|
||
|
}
|
||
|
featureGroup[t.unique_id][t.name].addLayer(layer);
|
||
|
|
||
|
if (layer instanceof L.Marker) {
|
||
|
layer.setIcon(L.AwesomeMarkers.icon(selectedLayers[index].style.marker));
|
||
|
}
|
||
|
layer.bindPopup(selectedLayers[index].pc);
|
||
|
|
||
|
// layer.on("click", function () {
|
||
|
// var index = getLayerIndex1(layer);
|
||
|
// if (layer instanceof L.Marker) {
|
||
|
// var popup = L.popup();
|
||
|
// popup.setLatLng(layer.getLatLng());
|
||
|
// popup.setContent(selectedLayers[index].pc);
|
||
|
// mymap.openPopup(popup);
|
||
|
// } else {
|
||
|
// var bounds = layer.getBounds();
|
||
|
// var popup = L.popup();
|
||
|
// popup.setLatLng(bounds.getCenter());
|
||
|
// popup.setContent(selectedLayers[index].pc);
|
||
|
// mymap.openPopup(popup);
|
||
|
// }
|
||
|
// });
|
||
|
|
||
|
},
|
||
|
style: function (feature, layer) {
|
||
|
return t.style.polygon;
|
||
|
},
|
||
|
pointToLayer: function (feature, latlng) {
|
||
|
//console.log(feature);
|
||
|
if (typeof t.radius != "undefined") {
|
||
|
return L.circle(latlng, parseInt(t.radius, 10));
|
||
|
} else {
|
||
|
return L.marker(latlng);
|
||
|
}
|
||
|
},
|
||
|
})
|
||
|
|
||
|
});
|
||
|
calculateBounds();
|
||
|
}
|
||
|
|
||
|
function calculateBounds() {
|
||
|
|
||
|
bounds = true;
|
||
|
|
||
|
jQuery.each(selectedLayers, function (key, g) {
|
||
|
|
||
|
if (typeof g.settings.active == "undefined" || g.settings.active == 1) {
|
||
|
|
||
|
if (g.type == 1 || (g.type == 4 && typeof g.geometry_area == "undefined")) {
|
||
|
|
||
|
// if (bounds != true) {
|
||
|
// // console.log("inside");
|
||
|
// bounds.extend([parseFloat(g['LatLonBoundingBox']['@attributes']['miny']), parseFloat(g['LatLonBoundingBox']['@attributes']['minx'])], [parseFloat(g['LatLonBoundingBox']['@attributes']['maxy']), parseFloat(g['LatLonBoundingBox']['@attributes']['maxx'])]);
|
||
|
//
|
||
|
// bounds = L.latLngBounds([parseFloat(g['LatLonBoundingBox']['@attributes']['miny']), parseFloat(g['LatLonBoundingBox']['@attributes']['minx'])], [parseFloat(g['LatLonBoundingBox']['@attributes']['maxy']), parseFloat(g['LatLonBoundingBox']['@attributes']['maxx'])]);
|
||
|
//
|
||
|
// } else {
|
||
|
// if(typeof g['LatLonBoundingBox'] != "undefined"){
|
||
|
// bounds = L.latLngBounds([parseFloat(g['LatLonBoundingBox']['@attributes']['miny']), parseFloat(g['LatLonBoundingBox']['@attributes']['minx'])], [parseFloat(g['LatLonBoundingBox']['@attributes']['maxy']), parseFloat(g['LatLonBoundingBox']['@attributes']['maxx'])]);
|
||
|
// } else if(typeof g['BoundingBox'] != "undefined"){
|
||
|
// bounds = L.latLngBounds([parseFloat(g['BoundingBox']['@attributes']['miny']), parseFloat(g['BoundingBox']['@attributes']['minx'])], [parseFloat(g['BoundingBox']['@attributes']['maxy']), parseFloat(g['BoundingBox']['@attributes']['maxx'])]);
|
||
|
// }
|
||
|
// }
|
||
|
}
|
||
|
if (g.type == 3) {
|
||
|
|
||
|
|
||
|
if (typeof featureGroup[g.unique_id] != "undefined" && typeof featureGroup[g.unique_id][g.name] != "undefined") {
|
||
|
|
||
|
var layer1 = featureGroup[g.unique_id][g.name];
|
||
|
if (bounds != true) {
|
||
|
var b1 = layer1.getBounds();
|
||
|
|
||
|
if (typeof b1._southWest != "undefined") {
|
||
|
bounds.extend(layer1.getBounds());
|
||
|
}
|
||
|
} else {
|
||
|
var b1 = layer1.getBounds();
|
||
|
|
||
|
if (typeof b1._southWest != "undefined") {
|
||
|
console.log("checked");
|
||
|
bounds = b1;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|
||
|
}
|
||
|
|
||
|
})
|
||
|
|
||
|
// $.each(featureGroup, function (l, layer) {
|
||
|
// if (bounds != true) {
|
||
|
// // console.log("inside");
|
||
|
// bounds.extend(layer.getBounds());
|
||
|
// } else {
|
||
|
// bounds = layer.getBounds();
|
||
|
// }
|
||
|
// })
|
||
|
//
|
||
|
|
||
|
if (bounds !== true) {
|
||
|
mymap.fitBounds(bounds);
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
function getLayersIndex(id) {
|
||
|
var len = selectedLayers.length;
|
||
|
for (i = 0; i < len; i++) {
|
||
|
if (selectedLayers[i].unique_id == id) {
|
||
|
return i;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function getIndex(obj, key, value) {
|
||
|
var len = obj.length;
|
||
|
for (i = 0; i < len; i++) {
|
||
|
if (obj[i][key] == value) {
|
||
|
return i;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function getSQLPopupContent(properties, defined_content) {
|
||
|
// var featuresHTML = defined_content;
|
||
|
|
||
|
$.each(properties, function (key, value) {
|
||
|
|
||
|
if (value.match(/\.(jpeg|jpg|gif|png)$/) != null) {
|
||
|
console.log(value);
|
||
|
var image = '<img src="' + value + '" style="height:50px;width:50px;"/>';
|
||
|
defined_content = defined_content.replace("<" + key + ">", image);
|
||
|
} else {
|
||
|
defined_content = defined_content.replace("<" + key + ">", value);
|
||
|
}
|
||
|
|
||
|
});
|
||
|
//featuresHTML += "</ul></div></div>";
|
||
|
|
||
|
return defined_content;
|
||
|
}
|
||
|
|
||
|
function defaultSettings() {
|
||
|
|
||
|
map.settings = map.settings != "" ? JSON.parse(map.settings) : new Object;
|
||
|
|
||
|
if (typeof map.settings.width == "undefined") {
|
||
|
map.settings.width = 500;
|
||
|
}
|
||
|
if (typeof map.settings.height == "undefined") {
|
||
|
map.settings.height = 500;
|
||
|
}
|
||
|
if (typeof map.settings.zoom == "undefined") {
|
||
|
map.settings.zoom = 6;
|
||
|
}
|
||
|
|
||
|
if (typeof map.settings.fullscreen == "undefined") {
|
||
|
map.settings.fullscreen = 1;
|
||
|
}
|
||
|
|
||
|
if (typeof map.settings.https == "undefined") {
|
||
|
map.settings.https = 1;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function assingSettings() {
|
||
|
// mymap.setZoom(map.settings.zoom);
|
||
|
}
|
||
|
|
||
|
function saveMapData(type, callback) {
|
||
|
|
||
|
var len = selectedLayers.length;
|
||
|
|
||
|
var jt = new Array();
|
||
|
for (i = 0; i < len; i++) {
|
||
|
|
||
|
if (typeof selectedLayers[i].is_dirty != "undefined") {
|
||
|
|
||
|
if (typeof selectedLayers[i].boundary_id != "undefined" && typeof selectedLayers[i].geometry_area != "undefined") {
|
||
|
selectedLayers[i].geometry_area = "";
|
||
|
}
|
||
|
|
||
|
var s = jQuery.extend(true, {}, selectedLayers[i]);
|
||
|
|
||
|
if (s.type == 3) {
|
||
|
if (s.layer instanceof L.Circle) {
|
||
|
s.radius = s.layer.getRadius();
|
||
|
}
|
||
|
s.layer = s.layer.toGeoJSON();
|
||
|
}
|
||
|
jt.push(s);
|
||
|
}
|
||
|
}
|
||
|
var t = {
|
||
|
"selectedLayers": jt,
|
||
|
"selectedBaseLayers": selectedBaseLayers
|
||
|
}
|
||
|
jQuery('#action_type').val(type);
|
||
|
var json = JSON.stringify(t);
|
||
|
|
||
|
jQuery('#layer_json').val(json);
|
||
|
var formdata = jQuery('#layer-form, #map-settings-form').serialize();
|
||
|
|
||
|
ajaxRequest('/developer/map/save', 'post', 'json', formdata, function (data) {
|
||
|
|
||
|
if (data.status == 200) {
|
||
|
jQuery('#map_id').val(data.map_id);
|
||
|
// window.location = baseURL + "/developer/map/edit/" + data.map_id;
|
||
|
//showMsg(data.action, data.msg);
|
||
|
|
||
|
$.each(selectedLayers, function (key, value) {
|
||
|
selectedLayers[key].is_dirty = undefined;
|
||
|
if (typeof selectedLayers[key]._id == "undefined") {
|
||
|
selectedLayers[key]._id = data.mapping_array[value.unique_id];
|
||
|
}
|
||
|
})
|
||
|
callback(data);
|
||
|
} else {
|
||
|
showMsg("error", data.msg);
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
function sortLayers() {
|
||
|
var all_id = new Array();
|
||
|
var i = 0;
|
||
|
$("#visiable-layers div.dropdown-menu .custom-control-layers").find('li').each(function (i) {
|
||
|
var id = $(this).attr("data-key");
|
||
|
all_id[i] = id;
|
||
|
i++;
|
||
|
|
||
|
});
|
||
|
|
||
|
$.each(all_id, function (index1, value) {
|
||
|
var index = getIndex(selectedLayers, 'unique_id', value);
|
||
|
selectedLayers[index].order = index1 + 1;
|
||
|
});
|
||
|
|
||
|
// $.ajax({
|
||
|
// type: "POST",
|
||
|
// url: "{{URL::action('Superadmin\LayersController@postSetOrder')}}",
|
||
|
// data: {'data_id': all_id}
|
||
|
// }).done(function(data) {
|
||
|
// alert("Order set successfully.");
|
||
|
// });
|
||
|
}
|
||
|
|
||
|
function overlayers_controls(t) {
|
||
|
|
||
|
var temp = document.getElementById('map-overlayer-controls-tmpl').innerHTML;
|
||
|
Mustache.parse(temp);
|
||
|
// var html = "";
|
||
|
if (t.type == 2 && (t.style.type == "nr" || t.style.type == "g")) {
|
||
|
|
||
|
var temp2 = document.getElementById('map-overlayer-submenu-controls-tmpl').innerHTML;
|
||
|
Mustache.parse(temp2);
|
||
|
$("<li/>").attr("data-key", t.unique_id).attr("data-name", t.name).addClass("nav-item treeview overlay_control_" + t.unique_id).html(Mustache.render(temp2, t)).appendTo("#visiable-layers div.dropdown-menu .custom-control-layers");
|
||
|
|
||
|
addSubOverLayer(t);
|
||
|
|
||
|
} else {
|
||
|
$("<li/>").attr("data-key", t.unique_id).attr("data-name", t.name).addClass("overlay_control_" + t.unique_id).html(Mustache.render(temp, t)).appendTo("#visiable-layers div.dropdown-menu .custom-control-layers").find('input[type="checkbox"]').bootstrapSwitch({size: 'mini', onSwitchChange: function (event, state) {
|
||
|
event.preventDefault();
|
||
|
var self = jQuery(this).parents("li:first");
|
||
|
var key = self.attr("data-key");
|
||
|
var name = self.attr("data-name");
|
||
|
var index = getIndex(selectedLayers, 'unique_id', key);
|
||
|
var t = selectedLayers[index];
|
||
|
// if (t.type == 3) {
|
||
|
//
|
||
|
// if (state === true) {
|
||
|
//
|
||
|
// var layers = featureGroup[key][name];
|
||
|
// console.log(layers);
|
||
|
// // $.each(layers, function (key, val) {
|
||
|
//
|
||
|
// drawingGroup.addLayer(layers);
|
||
|
// // });
|
||
|
//
|
||
|
// }else{
|
||
|
// var layers = featureGroup[key][name];
|
||
|
// //$.each(layers, function (key, val) {
|
||
|
// drawingGroup.removeLayer(layers);
|
||
|
// //});
|
||
|
// }
|
||
|
// } else {
|
||
|
if (state === true) {
|
||
|
mymap.addLayer(featureGroup[key][name]);
|
||
|
} else {
|
||
|
mymap.removeLayer(featureGroup[key][name]);
|
||
|
}
|
||
|
// }
|
||
|
|
||
|
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
if (typeof page != "undefined" && page == "manage") {
|
||
|
// $("#visiable-layers div.dropdown-menu .custom-control-layers").sortable({
|
||
|
// // helper: fixHelperModified,
|
||
|
// stop: sortLayers,
|
||
|
// // helper: 'clone'
|
||
|
// // cursorAt: {left:0, top:0}
|
||
|
// //connectWith: "table"
|
||
|
// }).disableSelection();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function addSubOverLayer(t) {
|
||
|
|
||
|
var $vl = jQuery('li[data-key="' + t.unique_id + '"]');
|
||
|
var temp1 = document.getElementById('map-overlayer-sub-controls-tmpl').innerHTML;
|
||
|
// html = '<ul class="nav custom-control-layers ui-sortable sub-overlayers-control"></ul>';
|
||
|
//$vl.append(html);
|
||
|
|
||
|
$.each(t.style.custom, function (index, val) {
|
||
|
|
||
|
$("<li/>").attr("data-key", t.unique_id).attr("data-name", t.name).attr("data-val", val.val).html(Mustache.render(temp1, {val: val.val, t: t})).appendTo($vl.find("ul")).find('input[type="checkbox"]').bootstrapSwitch({size: 'mini', onSwitchChange: function (event, state) {
|
||
|
event.preventDefault();
|
||
|
var self = jQuery(this).parents("li:first");
|
||
|
var key = self.attr("data-key");
|
||
|
var name = self.attr("data-name");
|
||
|
var val = self.attr("data-val");
|
||
|
|
||
|
var index = getIndex(selectedLayers, 'unique_id', key);
|
||
|
var t = selectedLayers[index];
|
||
|
var layers = featureGroup[key][name].getLayers();
|
||
|
|
||
|
$.each(layers, function (key1, val1) {
|
||
|
|
||
|
val1.eachLayer(function (layer) {
|
||
|
|
||
|
if (t.style.type == "nr") {
|
||
|
|
||
|
if (between(layer.feature.properties[t.style.field], val)) {
|
||
|
if (state === true) {
|
||
|
mymap.addLayer(layer);
|
||
|
} else {
|
||
|
mymap.removeLayer(layer);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
} else if (t.style.type == "g") {
|
||
|
if (layer.feature.properties[t.style.field] == val) {
|
||
|
if (state === true) {
|
||
|
mymap.addLayer(layer);
|
||
|
} else {
|
||
|
mymap.removeLayer(layer);
|
||
|
}
|
||
|
|
||
|
}
|
||
|
}
|
||
|
|
||
|
});
|
||
|
|
||
|
});
|
||
|
|
||
|
}
|
||
|
});
|
||
|
|
||
|
})
|
||
|
jQuery('.subcontrol-layer-action').slimScroll({
|
||
|
alwaysVisible: true,
|
||
|
height: 100
|
||
|
});
|
||
|
|
||
|
jQuery('.submenu-overlay-controls').click(function (e) {
|
||
|
e.preventDefault();
|
||
|
var $self = jQuery(this);
|
||
|
$self.toggleClass("in");
|
||
|
var d = $($self.attr("href"));
|
||
|
|
||
|
if (d.hasClass("in")) {
|
||
|
d.collapse("hide");
|
||
|
} else {
|
||
|
d.collapse("show");
|
||
|
}
|
||
|
|
||
|
return false;
|
||
|
|
||
|
})
|
||
|
}
|
||
|
|
||
|
function baselayers_controls(name) {
|
||
|
|
||
|
var temp = document.getElementById('map-baselayer-controls-tmpl').innerHTML;
|
||
|
Mustache.parse(temp);
|
||
|
|
||
|
$("<li/>").attr("data-name", name).addClass("baselayer_control_" + name).html(Mustache.render(temp, {name: name})).prependTo("#visiable-layers div.dropdown-menu .baselayers-control-layers").find('input[type="radio"]').bootstrapSwitch({size: 'mini', onSwitchChange: function (event, state) {
|
||
|
event.preventDefault();
|
||
|
|
||
|
var self = jQuery(this).parents("li:first");
|
||
|
var name = self.attr("data-name");
|
||
|
|
||
|
$.each(baseLayers["mymap"], function (name, value) {
|
||
|
console.log(name);
|
||
|
mymap.removeLayer(baseLayers["mymap"][name]);
|
||
|
})
|
||
|
if (state === true) {
|
||
|
|
||
|
mymap.addLayer(baseLayers["mymap"][name]);
|
||
|
}
|
||
|
}});
|
||
|
|
||
|
|
||
|
}
|
||
|
|
||
|
function removeOverlayerControl(gskey) {
|
||
|
jQuery('#visiable-layers').find('.overlay_control_' + gskey).remove();
|
||
|
}
|
||
|
function applyLiveStyle(type) {
|
||
|
|
||
|
var my_unique_id = jQuery('#map-sidebar-container [name="my_unique_id"]').val();
|
||
|
var index = getIndex(selectedLayers, 'unique_id', my_unique_id);
|
||
|
update_dirty(index, 2);
|
||
|
|
||
|
var style = {};
|
||
|
jQuery('#layer-polygon-styling input').each(function () {
|
||
|
var $self = jQuery(this);
|
||
|
style[$self.attr("name")] = $self.val();
|
||
|
})
|
||
|
|
||
|
var marker = {};
|
||
|
jQuery('#layer-marker-styling .default-marker-style select').each(function () {
|
||
|
var $self = jQuery(this);
|
||
|
marker[$self.attr("data-name")] = $self.val();
|
||
|
})
|
||
|
|
||
|
if (selectedLayers[index].type == 2) {
|
||
|
var layers = featureGroup[selectedLayers[index].unique_id][selectedLayers[index].name].getLayers();
|
||
|
$.each(layers, function (key, val) {
|
||
|
val.eachLayer(function (layer) {
|
||
|
|
||
|
if (layer instanceof L.Marker) {
|
||
|
layer.setIcon(L.AwesomeMarkers.icon(marker));
|
||
|
} else if (layer instanceof L.Polyline ||
|
||
|
layer instanceof L.Polygon ||
|
||
|
layer instanceof L.Rectangle ||
|
||
|
layer instanceof L.Circle) {
|
||
|
layer.setStyle(style);
|
||
|
}
|
||
|
|
||
|
});
|
||
|
});
|
||
|
} else if (selectedLayers[index].type == 3) {
|
||
|
var layer = selectedLayers[index].layer;
|
||
|
if (layer instanceof L.Marker) {
|
||
|
layer.setIcon(L.AwesomeMarkers.icon(marker));
|
||
|
} else if (layer instanceof L.Polyline ||
|
||
|
layer instanceof L.Polygon ||
|
||
|
layer instanceof L.Rectangle ||
|
||
|
layer instanceof L.Circle) {
|
||
|
layer.setStyle(style);
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
// .setStyle(style);
|
||
|
selectedLayers[index]['style'].polygon = style;
|
||
|
selectedLayers[index]['style'].marker = marker;
|
||
|
|
||
|
}
|
||
|
|
||
|
function defaultLayerStyle(t) {
|
||
|
|
||
|
var polygon = new Object;
|
||
|
var marker = new Object;
|
||
|
|
||
|
if (typeof t.style == "undefined") {
|
||
|
t.style = new Object;
|
||
|
|
||
|
}
|
||
|
if (typeof t.style.polygon != "undefined") {
|
||
|
polygon = t.style.polygon;
|
||
|
} else {
|
||
|
t.style.polygon = new Object;
|
||
|
}
|
||
|
|
||
|
if (typeof t.style.marker != "undefined") {
|
||
|
marker = t.style.marker;
|
||
|
} else {
|
||
|
t.style.marker = new Object;
|
||
|
}
|
||
|
|
||
|
|
||
|
if (typeof polygon.color == "undefined") {
|
||
|
polygon.color = "#ccc";
|
||
|
}
|
||
|
|
||
|
if (typeof polygon.opacity == "undefined") {
|
||
|
polygon.opacity = 1;
|
||
|
}
|
||
|
|
||
|
if (typeof polygon.fillOpacity == "undefined") {
|
||
|
polygon.fillOpacity = 1;
|
||
|
}
|
||
|
|
||
|
if (typeof polygon.fillColor == "undefined") {
|
||
|
polygon.fillColor = "#ccc";
|
||
|
}
|
||
|
|
||
|
if (typeof polygon.weight == "undefined") {
|
||
|
polygon.weight = 1;
|
||
|
}
|
||
|
|
||
|
if (typeof marker.icon == "undefined") {
|
||
|
marker.icon = "";
|
||
|
}
|
||
|
|
||
|
if (typeof marker.color == "undefined") {
|
||
|
marker.color = "blue";
|
||
|
}
|
||
|
|
||
|
t.style.polygon = polygon;
|
||
|
t.style.marker = marker;
|
||
|
|
||
|
var index = getIndex(selectedLayers, 'unique_id', t.unique_id);
|
||
|
selectedLayers[index]['style'] = t.style;
|
||
|
return t;
|
||
|
}
|
||
|
|
||
|
function getLayerIndex1(layer) {
|
||
|
var len = selectedLayers.length;
|
||
|
for (i = 0; i < len; i++) {
|
||
|
if (selectedLayers[i].type == 3 && selectedLayers[i].layer == layer) {
|
||
|
return i;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function between(x, range) {
|
||
|
x = parseFloat(x);
|
||
|
var n = range.split('-');
|
||
|
return x >= n[0] && x <= n[1];
|
||
|
}
|
||
|
|
||
|
function getMarkerStyle(marker) {
|
||
|
|
||
|
if (marker.markerColor == "") {
|
||
|
var marker_color = jQuery('#default_style_marker_color').val();
|
||
|
console.log(marker_color);
|
||
|
if (marker_color != "") {
|
||
|
marker.markerColor = marker_color;
|
||
|
} else {
|
||
|
marker.markerColor = "blue";
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
if (marker.icon == "") {
|
||
|
|
||
|
var marker_icon = jQuery('#default_style_marker_icon').val();
|
||
|
if (marker_icon != "") {
|
||
|
marker.icon = marker_icon;
|
||
|
} else {
|
||
|
marker.icon = "";
|
||
|
}
|
||
|
|
||
|
}
|
||
|
return marker;
|
||
|
}
|
||
|
|
||
|
function update_dirty(index, action) {
|
||
|
selectedLayers[index].is_dirty = 1;
|
||
|
if (typeof selectedLayers[index]._id == "undefined") {
|
||
|
if (action == 1 || action == 2) {
|
||
|
selectedLayers[index].is_dirty = 1;
|
||
|
} else if (action == 3) {
|
||
|
selectedLayers.splice(index, 1);
|
||
|
}
|
||
|
} else {
|
||
|
selectedLayers[index].is_dirty = action;
|
||
|
}
|
||
|
|
||
|
}
|
||
|
function order_current_active_layers() {
|
||
|
|
||
|
activeLayers.sort(sort_value_layer);
|
||
|
|
||
|
var len = activeLayers.length;
|
||
|
for (i = 0; i < len; i++) {
|
||
|
activeLayers[i].order = activeLayers[i].order + 1;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function add_current_layer_text(t) {
|
||
|
if (typeof page != "undefined" && page == "user_farm") {
|
||
|
var cs_html = document.getElementById('user-farm-active-layers-tmpl').innerHTML;
|
||
|
Mustache.parse(cs_html);
|
||
|
|
||
|
jQuery('#current-active-layer ul').prepend(Mustache.render(cs_html, t));
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
function add_sql_legend(t, show) {
|
||
|
console.log(t);
|
||
|
if (show == true) {
|
||
|
if (t.type == 2 && (t.style.type == "nr" || t.style.type == "g")) {
|
||
|
|
||
|
legend[t.unique_id] = L.control({position: 'bottomright'});
|
||
|
legend[t.unique_id].onAdd = function (map) {
|
||
|
|
||
|
var div = L.DomUtil.create('div', 'info mapfig-legend');
|
||
|
div.innerHTML += '<h6 class="map-legend-title">' + t.name + "</h6>";
|
||
|
|
||
|
$.each(t.style.custom, function (key, val) {
|
||
|
|
||
|
var icon = val.style.icon;
|
||
|
|
||
|
if (icon.indexOf(".png") !== -1) {
|
||
|
var href = baseURL + "assets/img/markers/" + val.style.markerColor + '-' + val.style.icon;
|
||
|
div.innerHTML += '<div class="map-legend"><img src="' + href + '" height="20"/><div class="legend-text">' + val.val + '</div></div>';
|
||
|
} else {
|
||
|
div.innerHTML += '<div class="map-legend"><i class="fa fa-map-marker" style="color:' + val.style.markerColor + ' !important"></i><div class="legend-text">' + val.val + '</div></div>';
|
||
|
}
|
||
|
});
|
||
|
return div;
|
||
|
};
|
||
|
|
||
|
mymap.addControl(legend[t.unique_id]);
|
||
|
}
|
||
|
} else {
|
||
|
//legend[t.unique_id]).removeFrom(mymap);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function runFilterElementJS() {
|
||
|
|
||
|
if (jQuery('.datepicker').length > 0) {
|
||
|
jQuery('.datepicker').datepicker({
|
||
|
format: 'yyyy-mm-dd',
|
||
|
autoclose: true
|
||
|
});
|
||
|
}
|
||
|
|
||
|
if (jQuery('.input-daterange').length > 0) {
|
||
|
$(".input-daterange input.form-control").each(function () {
|
||
|
$self1 = $(this);
|
||
|
$self1.daterangepicker({
|
||
|
format: 'YYYY-MM-DD',
|
||
|
autoclose: true,
|
||
|
ranges: {
|
||
|
'Today': [moment(), moment()],
|
||
|
'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
|
||
|
'Last 7 Days': [moment().subtract(6, 'days'), moment()],
|
||
|
'Last 30 Days': [moment().subtract(29, 'days'), moment()],
|
||
|
'This Month': [moment().startOf('month'), moment().endOf('month')],
|
||
|
'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')]
|
||
|
}
|
||
|
}).on('apply.daterangepicker', function (ev, picker) {
|
||
|
var startname = $self1.attr("data-startname");
|
||
|
var endname = $self1.attr("data-endname");
|
||
|
console.log(startname);
|
||
|
$self1.parents('.input-daterange:first').find('[name="' + startname + '"]').val(picker.startDate.format('YYYY-MM-DD'));
|
||
|
$self1.parents('.input-daterange:first').find('[name="' + endname + '"]').val(picker.endDate.format('YYYY-MM-DD'));
|
||
|
});
|
||
|
|
||
|
});
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
if (jQuery('.dbisunique').length > 0) {
|
||
|
var $dbisunique = jQuery('select.dbisunique');
|
||
|
$dbisunique.each(function () {
|
||
|
|
||
|
jQuery(this).select2({
|
||
|
placeholder: "Select Filter",
|
||
|
width: "100%"
|
||
|
});
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
function filterGlobalData() {
|
||
|
|
||
|
$.each(selectedLayers, function (key, l) {
|
||
|
|
||
|
if (l.type == 2) {
|
||
|
|
||
|
var data = jQuery('#global_filter').serializeArray();
|
||
|
data.push({name: "type", value: 2});
|
||
|
data.push({name: "datasource", value: l.connection_id});
|
||
|
data.push({name: "layer_id", value: l._id});
|
||
|
data.push({name: "map_id", value: map.id});
|
||
|
data.push({name: "_token", value: jQuery('[name="_token"]').val()});
|
||
|
data.push({name: "sql_layer_name", value: l.name});
|
||
|
data.push({name: "query_box", value: l.query});
|
||
|
data.push({name: "cache_key", value: l.cache_key});
|
||
|
data.push({name: "cache_timer", value: 0});
|
||
|
|
||
|
ajaxRequest('map/layer/json', 'post', 'json', data, function (data) {
|
||
|
|
||
|
if (data.status == "200") {
|
||
|
processSQLJSON(data, l);
|
||
|
} else {
|
||
|
showMsg(data.status, data.msg);
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
|
||
|
})
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
function clearLayersAndControls(data, t) {
|
||
|
|
||
|
layer = featureGroup[t.unique_id][t.name];
|
||
|
|
||
|
if (layer) {
|
||
|
layer.clearLayers();
|
||
|
// if (typeof legend[t.unique_id] != "undefined") {
|
||
|
// legend[t.unique_id].removeFrom(mymap);
|
||
|
// }
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function getSQLFeatureData(t) {
|
||
|
|
||
|
var layers = featureGroup[t.unique_id][t.name].getLayers();
|
||
|
var featuredata = new Array();
|
||
|
var counter = 0;
|
||
|
|
||
|
$.each(layers, function (key, val) {
|
||
|
if (typeof t.cluster != "undefined" && t.cluster == 1) {
|
||
|
featuredata[counter++] = val.feature.properties;
|
||
|
} else {
|
||
|
val.eachLayer(function (layer) {
|
||
|
featuredata[counter++] = layer.feature.properties;
|
||
|
});
|
||
|
}
|
||
|
|
||
|
});
|
||
|
|
||
|
return featuredata;
|
||
|
|
||
|
}
|
||
|
var heatmap = new Array();
|
||
|
function processheatmapJSON(data, t) {
|
||
|
|
||
|
|
||
|
// addressPoints = addressPoints.map(function (p) {
|
||
|
// return [p[0], p[1], parseInt(p[2], 10)];
|
||
|
// });
|
||
|
// console.log(addressPoints);
|
||
|
|
||
|
//console.log(featureGroup[t.unique_id][t.name]);
|
||
|
if (typeof heatmap[t.unique_id] == "undefined") {
|
||
|
heatmap[t.unique_id] = L.heatLayer(data.result, {radius: 30}).addTo(featureGroup[t.unique_id][t.name]);
|
||
|
} else {
|
||
|
heatmap[t.unique_id].setLatLngs(data.result).setOptions({radius: 30}).redraw();
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
function render_layer_again(t) {
|
||
|
console.log(t);
|
||
|
featureGroup[t.unique_id][t.name].clearLayers();
|
||
|
show_active_layers_flag = false;
|
||
|
renderLayer(t, '');
|
||
|
show_active_layers_flag = true;
|
||
|
}
|
||
|
var pgsql_tmpl;
|
||
|
var featureGroup = new Array();
|
||
|
var bounds;
|
||
|
var layerSelector = new Array();
|
||
|
var overlays = new Array();
|
||
|
var mymap;
|
||
|
var currentBaseMap = new Array();
|
||
|
var marker_content_tmpl;
|
||
|
var popupContentId = new Array();
|
||
|
var drawingGroup;
|
||
|
|
||
|
jQuery(document).ready(function () {
|
||
|
|
||
|
defaultSettings();
|
||
|
drawingGroup = new L.FeatureGroup();
|
||
|
mymap = L.map('mapid').setView([51.505, -0.09], 13);
|
||
|
|
||
|
|
||
|
if (typeof map.settings.base_layer != "undefined" && map.settings.base_layer != "") {
|
||
|
layername = map.settings.base_layer;
|
||
|
} else if (selectedBaseLayers.length > 0) {
|
||
|
layername = selectedBaseLayers[0]['name'];
|
||
|
} else {
|
||
|
$.each(baseLayers["mymap"], function (layer, value) {
|
||
|
layername = layer;
|
||
|
})
|
||
|
}
|
||
|
|
||
|
if (isGoogle()){
|
||
|
|
||
|
currentBaseMap = L.tileLayer('https://{s}.google.com/vt/lyrs=s&x={x}&y={y}&z={z}', {
|
||
|
maxZoom: 20,
|
||
|
subdomains: ['mt0', 'mt1', 'mt2', 'mt3']
|
||
|
}).addTo(mymap);
|
||
|
|
||
|
|
||
|
} else {
|
||
|
|
||
|
currentBaseMap = L.tileLayer(baseLayers['mymap'][layername]._url, {
|
||
|
maxZoom: 18,
|
||
|
attribution: baseLayers['mymap'][layername].options.attribution,
|
||
|
id: baseLayers['mymap'][layername].options.id
|
||
|
}).addTo(mymap);
|
||
|
}
|
||
|
|
||
|
|
||
|
layerSelector = L.control.layers({}, {});
|
||
|
|
||
|
mymap.addControl(layerSelector);
|
||
|
assingSettings();
|
||
|
});
|
||
|
|
||
|
jQuery(document).ready(function () {
|
||
|
initLayer();
|
||
|
|
||
|
var sqlLayers = getDetailsByAttr(selectedLayers, 'type', 2);
|
||
|
if (sqlLayers.length == 0) {
|
||
|
ajaxLoadSucess();
|
||
|
}
|
||
|
}).ajaxStop(function () {
|
||
|
ajaxLoadSucess();
|
||
|
});
|
||
|
|
||
|
|
||
|
function ajaxLoadSucess() {
|
||
|
setTimeout(function () {
|
||
|
window.status = "done";
|
||
|
jQuery('#ajax-load-check').html("ajax-load-done");
|
||
|
}, 2000)
|
||
|
}
|
||
|
|
||
|
|
||
|
//# sourceMappingURL=map-p.js.map
|