Leaflet 支持的插件 Leaflet.GroupedLayerControl 现在支持独占分组层(通过类似于 baselayer 功能的单选按钮)。
但是,由于独占分组层的实现,BootLeaf 中的 isCollapsed 调用在调用独占层组时不再按预期执行。如果未调用,基础层和分组层仍会按预期执行,但是一旦将独占分组层添加到代码中就会出现问题。
如果窗口 <= 767px,代码要求分组图层控件折叠,否则如果窗口更大以完整显示分组图层控件:
if (document.body.clientWidth <= 767) {
var isCollapsed = true;
} else {
var isCollapsed = false;
}
var layerControl = L.control.groupedLayers(baseLayers, groupedOverlays, options, {
collapsed: isCollapsed
}).addTo(map);
根据我最初的尝试和错误,似乎无法修改现有更改以使分组图层控件在宽度超过 767 像素的窗口中打开,并且 Leaflet.GroupedLayerControl 中唯一的代码更改包括基本的独占组代码。我猜需要额外的代码来确保独占层包含在分组层控件中。
有关故障排除,请参阅: working JS fiddle WITHOUT exclusive layers 和 non-working JS fiddle WITH exclusive layers 。
尝试将 collapsed: isCollapsed
移动到选项对象,如下所示:
var options = {exclusiveGroups: ["Landmarks"], collapsed: isCollapsed};
我是一名优秀的程序员,十分优秀!