如何使用JS和传单层控件更改基础层

use*_*426 3 controls layer tile leaflet

我必须修改使用传单图层控件的现有应用程序 - 我需要在启动地图时显示基础图层之一。有没有办法,如何从 JS 脚本的图层控件中调用一些函数 - 类似于 control.select(1) ....?如果没有,如何以与控件相同的方式添加切片图层 - 当我在地图初始化期间添加新的 L.TileLayer 时,它不会被手动图层控件选择更改覆盖?

ghy*_*ybs 6

您可以尝试模拟用户单击传单图层控件,但有一种更简单的方法可以实现您最初描述的内容。

通常通过简单地向地图添加一个图层(例如myTileLayer.addTo(map)),如果该图层是图层控件基础图层或叠加层的一部分,后者将自动更新其状态(如果您添加了基础图层,单选按钮将被选中相应地;对于覆盖,相应的复选框将被勾选)。

现在我不确定我是否正确理解了您的最后一部分(“当我在地图初始化期间添加新的 L.TileLayer 时,它不会被手动图层控制选择更改覆盖”)。

如果你的意思是你有一个意外的行为,因为你添加的平铺层没有被图层控制改变,这可能是因为你没有重新使用图层控制知道的平铺层:不要使用new L.TileLayer,但是重用基础层或覆盖层之一。

例如:

var baselayers = {
    "Tile Layer 1": L.tileLayer(/* ... */),
    "Tile Layer 2": L.tileLayer(/* ... */),
    "Tile Layer 3": L.tileLayer(/* ... */)
};

var overlays = {};

L.control.layers(baselayers, overlays).addTo(map);

baseLayers["Tile Layer 1"].addTo(map);
Run Code Online (Sandbox Code Playgroud)