Leaflet 传单-允许切换到高于最大缩放的另一个基层

Leaflet 传单-允许切换到高于最大缩放的另一个基层,leaflet,Leaflet,我有两个基本层地图和卫星,用户可以切换。卫星层的最大缩放比例提高2。我正在使用传单提供的L.control.Layers来管理层 var mapLayer = L.tileLayer('map-tiles.example.com/{z}/{x}/{y}.png', { maxZoom: 18, }) var satelliteLayer = L.tileLayer('satellite-tiles.example.com/{z}/{x}/{y}.png', { maxZoom:

我有两个基本层地图和卫星,用户可以切换。卫星层的最大缩放比例提高2。我正在使用传单提供的L.control.Layers来管理层

var mapLayer = L.tileLayer('map-tiles.example.com/{z}/{x}/{y}.png', {
    maxZoom: 18,
})

var satelliteLayer = L.tileLayer('satellite-tiles.example.com/{z}/{x}/{y}.png', {
    maxZoom: 20,
})

var baseLayers = {
    'Map': mapLayer,
    'Satellite': satelliteLayer
}

var layerControls = L.control.layers(baseLayers).addTo(map);
如果用户在卫星视图中缩放到19或20,他将无法切换回地图层单选按钮将被禁用,直到他缩放回18或更低

我希望用户能够切换到地图层,即使在缩放19或20。当用户切换到地图图层时,缩放将设置为18


有没有办法通过传单的图层控制来实现这一点?或者我必须构建自定义图层控件吗?

在缩放19-20时选择mapLayer的一个简单解决方法是使用18的“平铺图层”选项,并将最大缩放增加到20


然后,如果您仍然希望在选择mapLayer时自动将缩放减少回18,请使用“地图上的侦听器”事件,检查map.getZoom并根据需要修改它map.setZoom18。

在缩放19-20时可选择mapLayer的一个简单解决方法是使用18处的“平铺层”选项,并将maxZoom增加到20

然后,如果您仍然希望在选择mapLayer时自动将缩放减少回18,请使用“地图侦听器”事件,检查map.getZoom并根据需要修改它map.setZoom18

有没有办法通过传单的图层控制来实现这一点

不是默认行为,否。如果选中,您将看到当层超出其最小/最大缩放范围时,L.Control.Layers始终禁用复选框/单选按钮

还是必须构建自定义图层控件

是的,您可以使用L.Control.Layers禁用此功能,将相关方法替换为不执行任何操作的函数:

L.Control.Layers.NeverDisable = L.Control.Layers.extend({

  _checkDisabledLayers: function(){}

});

var myLayersControl = new L.Control.Layers.NeverDisable(
    baselayers, overlayLayers, options);
myLayersControl.addTo(map);
你可以查一张支票

有没有办法通过传单的图层控制来实现这一点

不是默认行为,否。如果选中,您将看到当层超出其最小/最大缩放范围时,L.Control.Layers始终禁用复选框/单选按钮

还是必须构建自定义图层控件

是的,您可以使用L.Control.Layers禁用此功能,将相关方法替换为不执行任何操作的函数:

L.Control.Layers.NeverDisable = L.Control.Layers.extend({

  _checkDisabledLayers: function(){}

});

var myLayersControl = new L.Control.Layers.NeverDisable(
    baselayers, overlayLayers, options);
myLayersControl.addTo(map);

您可以查一下。

谢谢。最后我只是进入源代码并删除了_checkDisabledLayers中禁用单选按钮的代码,它工作正常。不过,如果你升级传单文件,就会破坏它。扩展控制不起作用。谢谢。最后我只是进入源代码并删除了_checkDisabledLayers中禁用单选按钮的代码,它工作正常。不过,如果你升级传单文件,就会破坏它。扩展控件不需要。