Simplifique a alternância de camadas ativadas e desativadas em um controle personalizado com caixas de seleção?

Esta questão é um subproduto daesta pergunta eu postei recentemente. Gostaria de saber se existe uma maneira melhor de verificar e ativar / desativar as camadas ao usar um controle de camadas personalizado.(Nota: Eu também tenho um botão que limpa todas as camadas, se pressionado.)

Meu controle de camadas personalizadas (L.Control.extend) fica assim:

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;
 }
});

E meu JS se parece com isso (para o botão 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;
}
})
});

Para ativar / desativar a alternância de camadas:

$(".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...
     }
  });

Mas, um pôster sobre essa questão vinculada acima sugeria:

"você poderia ter feito isso um pouco mais simples, lendo a propriedade marcada na alteração de entrada e remova / adicione a camada de acordo, em vez de testar a presença da camada no mapa. Com seu método, você pode terminar com caixas de seleção fora de sincronia ( assinalado enquanto a camada é removida do mapa e vice-versa). "

Alguém tem alguma dica de como eu poderia ter feito isso de uma maneira mais eficiente?

questionAnswers(1)

yourAnswerToTheQuestion