ol-ext-datatable
Version:
Datatables version
69 lines (58 loc) • 1.97 kB
JavaScript
/* Copyright (c) 2016 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 from 'ol'
import ol_control_LayerSwitcher from './LayerSwitcher'
/**
* @classdesc OpenLayers 3 Layer Switcher Control.
* @require layer.getPreview
* @require jQuery
*
* @constructor
* @extends {ol_control_LayerSwitcher}
* @param {Object=} options Control options.
*/
var ol_control_LayerSwitcherImage = function(options)
{ options = options || {};
options.switcherClass="ol-layerswitcher-image";
if (options.mouseover!==false) options.mouseover=true;
ol_control_LayerSwitcher.call(this, options);
};
ol.inherits(ol_control_LayerSwitcherImage, ol_control_LayerSwitcher);
/** Render a list of layer
* @param {elt} element to render
* @layers {Array{ol.layer}} list of layer to show
* @api stable
*/
ol_control_LayerSwitcherImage.prototype.drawList = function(ul, layers)
{ var self = this;
var setVisibility = function(e)
{ e.preventDefault();
var l = $(this).data("layer");
self.switchLayerVisibility(l,layers);
if (e.type=="touchstart") $(self.element).addClass("ol-collapsed");
};
ul.css("height","auto");
layers.forEach(function(layer)
{ if (self.displayInLayerSwitcher(layer))
{ var prev = layer.getPreview ? layer.getPreview() : ["none"];
var d = $("<li>").addClass("ol-imgcontainer")
.data ('layer', layer)
.click (setVisibility)
.on ("touchstart", setVisibility);
if (layer.getVisible()) d.addClass("select");
for (var k=0; k<prev.length; k++)
{ $("<img>").attr('src', prev[k])
.appendTo(d);
}
$("<p>").text(layer.get("title") || layer.get("name")).appendTo(d);
if (self.testLayerVisibility(layer)) d.addClass("ol-layer-hidden");
d.appendTo(ul);
}
});
};
/** Disable overflow
*/
ol_control_LayerSwitcherImage.prototype.overflow = function(){};
export default ol_control_LayerSwitcherImage