+ map.on('layeradd layerremove', function() {
+ item.toggleClass('active', map.hasLayer(layer));
+ input.prop('checked', map.hasLayer(layer));
+ });
+ });
+
+ if (OSM.STATUS != 'api_offline' && OSM.STATUS != 'database_offline') {
+ var overlaySection = $('<div>')
+ .attr('class', 'section overlay-layers')
+ .appendTo($ui);
+
+ $('<p>')
+ .text(I18n.t('javascripts.map.layers.overlays'))
+ .attr("class", "deemphasize")
+ .appendTo(overlaySection);
+
+ var list = $('<ul>')
+ .appendTo(overlaySection);
+
+ function addOverlay(layer, name, maxArea) {
+ var refName = name.split(' ').join('_').toLowerCase();
+ var item = $('<li>')
+ .attr('class', refName)
+ .tooltip({
+ placement: 'top'
+ })
+ .appendTo(list);
+
+ var label = $('<label>')
+ .appendTo(item);
+
+ var input = $('<input>')
+ .attr('type', 'checkbox')
+ .prop('checked', map.hasLayer(layer))
+ .appendTo(label);
+
+ label.append(name);
+
+ input.on('change', function() {
+ if (input.is(':checked')) {
+ map.addLayer(layer);
+ } else {
+ map.removeLayer(layer);
+ }
+ map.fire('overlaylayerchange', {layer: layer});
+ });
+
+ map.on('layeradd layerremove', function() {
+ input.prop('checked', map.hasLayer(layer));
+ });
+
+ map.on('zoomend', function() {
+ var disabled = map.getBounds().getSize() >= maxArea;
+ $(input).prop('disabled', disabled);
+ $(item).attr('class', disabled ? 'disabled' : '');
+ item.attr('data-original-title', disabled ?
+ I18n.t('javascripts.site.' + refName + '_zoom_in_tooltip') : '');
+ });
+ }