¿Simplificar la activación y desactivación de capas en un control personalizado con casillas de verificación?

Esta pregunta es un retoño deesta pregunta que publiqué recientemente. Me pregunto si hay una mejor manera de verificar y activar / desactivar capas al usar un control de capas personalizado.(Nota: también tengo un botón que borra todas las capas, si se presiona).

Mi control de capas personalizado (L.Control.extend) se ve así:

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

Y mi JS se ve así (para el botón 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 activar / desactivar capas:

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

Pero, un póster sobre esa pregunta vinculada sugiere:

"podría haberlo hecho un poco más simple al leer la propiedad marcada en el cambio de entrada y eliminar / agregar la capa en consecuencia, en lugar de probar la presencia de la capa en el mapa. Con su método, puede terminar con casillas de verificación no sincronizadas ( marcado mientras que la capa se elimina del mapa y viceversa) ".

¿Alguien tiene algún consejo sobre cómo podría haber hecho esto de una manera más eficiente?

Respuestas a la pregunta(1)

Su respuesta a la pregunta