Упростить переключение слоев в пользовательский элемент управления с помощью флажков?
Этот вопрос является ответомэтот вопрос я недавно выложил, Мне интересно, есть ли лучший способ проверять и включать / выключать слои при использовании пользовательского элемента управления слоями.(Примечание: у меня также есть кнопка, которая очищает все слои, если нажата.)
Мой пользовательский слой управления (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...
}
});
Но постер по этому связанному выше вопросу предлагает:
«Вы могли бы сделать это немного проще, прочитав проверенное свойство при изменении ввода и соответственно удалив / добавив слой, вместо того, чтобы проверять наличие слоя на карте. С помощью вашего метода вы можете в конечном итоге установить несинхронизированные флажки ( отмечен, тогда как слой удаляется с карты, и наоборот). "
У кого-нибудь есть какие-нибудь советы о том, как я мог бы сделать это более эффективным способом?