ol-ext
Version:
A set of cool extensions for OpenLayers (ol) in node modules structure
60 lines (54 loc) • 1.75 kB
JavaScript
/* Copyright (c) 2015 Jean-Marc VIGLINO,
released under the CeCILL-B license (French BSD license)
(http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.txt).
*/
import ol_control_LayerSwitcher from './LayerSwitcher.js'
import ol_ext_element from '../util/element.js';
/**
* OpenLayers Layer Switcher Control.
*
* @constructor
* @extends {ol_control_LayerSwitcher}
* @param {Object=} options Control options.
*/
var ol_control_LayerPopup = class olcontrolLayerPopup extends ol_control_LayerSwitcher {
constructor(options) {
options = options || {};
options.switcherClass = 'ol-layerswitcher-popup' + (options.switcherClass ? ' ' + options.switcherClass : '');
if (options.mouseover !== false) options.mouseover = true;
super(options);
}
/** Disable overflow
*/
overflow() { }
/** Render a list of layer
* @param {elt} element to render
* @layers {Array{ol.layer}} list of layer to show
* @api stable
*/
drawList(ul, layers) {
var self = this;
var setVisibility = function (e) {
e.preventDefault();
var l = self._getLayerForLI(this);
self.switchLayerVisibility(l, layers);
if (e.type === 'touchstart')
self.element.classList.add('ol-collapsed');
};
layers.forEach(function (layer) {
if (self.displayInLayerSwitcher(layer)) {
var d = ol_ext_element.create('LI', {
html: layer.get('title') || layer.get('name'),
on: { 'click touchstart': setVisibility },
parent: ul
});
self._setLayerForLI(d, layer);
if (self.testLayerVisibility(layer))
d.classList.add('ol-layer-hidden');
if (layer.getVisible())
d.classList.add('ol-visible');
}
});
}
}
export default ol_control_LayerPopup