Упростить переключение слоев в пользовательский элемент управления с помощью флажков?

Этот вопрос является ответомэтот вопрос я недавно выложил, Мне интересно, есть ли лучший способ проверять и включать / выключать слои при использовании пользовательского элемента управления слоями.(Примечание: у меня также есть кнопка, которая очищает все слои, если нажата.)

Мой пользовательский слой управления (L.Control.extend) выглядит следующим образом:

var overlaysMenuCtrl = L.Control.extend({
    onAdd: function(map){
        var container = L.DomUtil.create('div', 'legend');
        container.innerHTML = 
'<input type="checkbox" id="airfields" class="check">Airfields
<input type="checkbox" id="docks" class="check">Docks
... and so on ...
<button id="clearAll">Clear All Layers</button>';
return container;
 }
});

И мой JS выглядит так (для кнопки clearAll):

$("#clearAll").click(function(event) {
 event.preventDefault();

$(".check").each(function(i, el) {
if (el.checked) {
  // Trigger the event.
  $(el).change();
  // Untick the checkbox.
  el.checked = false;
}
})
});

Для включения / выключения слоев:

$(".check").change(function(){
var layerClicked = $(this).attr("id");
    switch(layerClicked){
        case "airfields":
            if (map.haslayer(airfields)){
                 map.removeLayer(airfields);
            } else {
                  map.addLayer(airfields);
            }
         break;
       // ...and so on...
     }
  });

Но постер по этому связанному выше вопросу предлагает:

«Вы могли бы сделать это немного проще, прочитав проверенное свойство при изменении ввода и соответственно удалив / добавив слой, вместо того, чтобы проверять наличие слоя на карте. С помощью вашего метода вы можете в конечном итоге установить несинхронизированные флажки ( отмечен, тогда как слой удаляется с карты, и наоборот). "

У кого-нибудь есть какие-нибудь советы о том, как я мог бы сделать это более эффективным способом?

Ответы на вопрос(1)

Ваш ответ на вопрос