+ var $ui = $('<div>')
+ .attr('class', 'layers-ui');
+
+ $('<h2>')
+ .text(I18n.t('javascripts.key.title'))
+ .appendTo($ui);
+
+ var $section = $('<section>')
+ .appendTo($ui);
+
+ options.sidebar.addPane($ui);
+
+ $ui
+ .on('show', shown)
+ .on('hide', hidden);
+
+ function shown() {
+ map.on('zoomend baselayerchange', update);
+ $section.load('/key', update);
+ }
+
+ function hidden() {
+ map.off('zoomend baselayerchange', update);
+ }
+
+ function toggle(e) {
+ e.stopPropagation();
+ e.preventDefault();
+ options.sidebar.togglePane($ui);
+ }
+
+ function update() {
+ var layer = getMapBaseLayerId(map),
+ zoom = map.getZoom();
+
+ $('.mapkey-table-entry').each(function () {
+ var data = $(this).data();
+ if (layer == data.layer && zoom >= data.zoomMin && zoom <= data.zoomMax) {
+ $(this).show();
+ } else {
+ $(this).hide();
+ }
+ });
+ }
+