X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/eebe1f1d3ed885e94725c07d24e0483f603f03da..c8f8dbca19f9f1ed3539f93e1785d4de70f2b093:/app/assets/javascripts/leaflet.key.js?ds=sidebyside diff --git a/app/assets/javascripts/leaflet.key.js b/app/assets/javascripts/leaflet.key.js index 5756f0c41..4906cfcff 100644 --- a/app/assets/javascripts/leaflet.key.js +++ b/app/assets/javascripts/leaflet.key.js @@ -1,4 +1,4 @@ -L.OSM.key = function(options) { +L.OSM.key = function (options) { var control = L.control(options); control.onAdd = function (map) { @@ -8,10 +8,55 @@ L.OSM.key = function(options) { $('') .attr('class', 'control-button') .attr('href', '#') - .attr('title', 'Map Key') + .attr('title', I18n.t("javascripts.key.tooltip")) .html('') + .on('click', toggle) .appendTo($container); + var $ui = $('
') + .attr('class', 'layers-ui') + .appendTo(options.uiPane); + + $('

') + .text(I18n.t('javascripts.key.title')) + .appendTo($ui); + + var $section = $('
') + .appendTo($ui); + + function toggle(e) { + e.stopPropagation(); + e.preventDefault(); + + var controlContainer = $('.leaflet-control-container .leaflet-top.leaflet-right'); + + if ($ui.is(':visible')) { + $(options.uiPane).hide(); + controlContainer.css({paddingRight: '0'}); + map.off("zoomend baselayerchange", update); + } else { + $(options.uiPane).show(); + controlContainer.css({paddingRight: '200px'}); + map.on("zoomend baselayerchange", update); + $section.load('/key', update); + } + } + + function update() { + var mapLayer = getMapBaseLayerId(map), + mapZoom = map.getZoom(); + + $(".mapkey-table-entry").each(function () { + var data = $(this).data(); + + if (mapLayer == data.layer && mapZoom >= data.zoomMin && mapZoom <= data.zoomMax) { + $(this).show(); + } else { + $(this).hide(); + } + }); + } + return $container[0]; };