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);
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.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');
+ }
+
+ layer.fire('statechange', {disabled: disabled, checked: checked});
+
$(item).attr('class', disabled ? 'disabled' : '');
item.attr('data-original-title', disabled ?
I18n.t('javascripts.site.' + refName + '_zoom_in_tooltip') : '');