SourceTermAnalysisSystem_vue/node_modules/ol-ext/control/Disable.js
2026-05-15 10:22:44 +08:00

48 lines
1.6 KiB
JavaScript

import ol_control_Control from 'ol/control/Control.js'
/** A simple control to disable all actions on the map.
* The control will create an invisible div over the map.
* @constructor
* @extends {ol_control_Control}
* @param {Object=} options Control options.
* @param {String} options.class class of the control
* @param {String} options.html html code to insert in the control
* @param {bool} options.on the control is on
* @param {function} options.toggleFn callback when control is clicked
*/
var ol_control_Disable = class olcontrolDisable extends ol_control_Control {
constructor(options) {
options = options || {};
var element = document.createElement('div');
element.className = (options.className || '' + ' ol-disable ol-unselectable ol-control').trim();
var stylesOptions = { top: "0px", left: "0px", right: "0px", bottom: "0px", "zIndex": 10000, background: "none", display: "none" };
Object.keys(stylesOptions).forEach(function (styleKey) {
element.style[styleKey] = stylesOptions[styleKey];
});
super({
element: element
});
}
/** Test if the control is on
* @return {bool}
* @api stable
*/
isOn() {
return this.element.classList.contains('ol-disable');
}
/** Disable all action on the map
* @param {bool} b, default false
* @api stable
*/
disableMap(b) {
if (b) {
this.element.classList.add('ol-enable')
this.element.style.display = 'block'
} else {
this.element.classList.remove('ol-enable')
this.element.style.display = 'none'
}
}
}
export default ol_control_Disable