.attr('class', 'section base-layers')
.appendTo($ui);
- list = $('<ul>')
+ var baseLayers = $('<ul>')
.appendTo(baseSection);
layers.forEach(function(layer) {
var item = $('<li>')
- .appendTo(list);
+ .appendTo(baseLayers);
if (map.hasLayer(layer)) {
item.addClass('active');
});
});
- if (OSM.STATUS != 'api_offline' && OSM.STATUS != 'database_offline') {
+ if (OSM.STATUS !== 'api_offline' && OSM.STATUS !== 'database_offline') {
var overlaySection = $('<div>')
.attr('class', 'section overlay-layers')
.appendTo($ui);
.attr("class", "deemphasize")
.appendTo(overlaySection);
- var list = $('<ul>')
+ var overlays = $('<ul>')
.appendTo(overlaySection);
- function addOverlay(layer, name, minZoom) {
- var refName = name.split(' ').join('_').toLowerCase();
+ var addOverlay = function (layer, name, maxArea) {
var item = $('<li>')
- .attr('class', refName)
.tooltip({
placement: 'top'
})
- .appendTo(list);
+ .appendTo(overlays);
var label = $('<label>')
.appendTo(item);
+ var checked = map.hasLayer(layer);
+
var input = $('<input>')
.attr('type', 'checkbox')
- .prop('checked', map.hasLayer(layer))
+ .prop('checked', checked)
.appendTo(label);
- label.append(name);
+ label.append(I18n.t('javascripts.map.layers.' + name));
input.on('change', function() {
- if (input.is(':checked')) {
+ checked = input.is(':checked');
+ if (checked) {
map.addLayer(layer);
} else {
map.removeLayer(layer);
});
map.on('zoomend', function() {
- var disabled = map.getZoom() < minZoom + 1;
+ var disabled = map.getBounds().getSize() >= maxArea;
$(input).prop('disabled', disabled);
+
+ if (disabled && $(input).is(':checked')) {
+ $(input).prop('checked', false)
+ .trigger('change');
+ checked = true;
+ } else if (!disabled && !$(input).is(':checked') && checked) {
+ $(input).prop('checked', true)
+ .trigger('change');
+ }
+
$(item).attr('class', disabled ? 'disabled' : '');
item.attr('data-original-title', disabled ?
- I18n.t('javascripts.site.' + refName + '_zoom_in_tooltip') : '');
+ I18n.t('javascripts.site.map_' + name + '_zoom_in_tooltip') : '');
});
- }
+ };
- addOverlay(map.noteLayer, I18n.t('javascripts.map.layers.notes'), 10);
- addOverlay(map.dataLayer, I18n.t('javascripts.map.layers.data'), 15);
+ addOverlay(map.noteLayer, 'notes', OSM.MAX_NOTE_REQUEST_AREA);
+ addOverlay(map.dataLayer, 'data', OSM.MAX_REQUEST_AREA);
}
options.sidebar.addPane($ui);