Leaflet 传单-允许切换到高于最大缩放的另一个基层
我有两个基本层地图和卫星,用户可以切换。卫星层的最大缩放比例提高2。我正在使用传单提供的L.control.Layers来管理层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:
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中禁用单选按钮的代码,它工作正常。不过,如果你升级传单文件,就会破坏它。扩展控件不需要。