如何在MapBox / Leaflet中以编程方式切换基础层


12

我有多个基础层,需要根据我的应用程序中的各种操作和状态以编程方式切换它们。在我的一生中找不到方法。

Answers:


16

本教程是一个很好的例子:

1)如示例中所示,为基础层设置一个变量名,该变量名可以在要以编程方式切换它们的函数中访问。

var grayscale = L.tileLayer(mapboxUrl, {id: 'MapID', attribution: mapboxAttribution}),
    streets   = L.tileLayer(mapboxUrl, {id: 'MapID', attribution: mapboxAttribution});

2)然后添加和删除要添加或删除的图层。以下内容将grayscale图层交换为该streets图层。假定两者grayscalestreets都在您进行切换的功能范围内可用。

map.removeLayer(grayscale);
map.addLayer(streets);

3)如果您使用的L.control.layers是示例中显示的图层控件,则该控件会跟踪地图上的内容,并相应地更改复选框。


这是mapboxUrlmapboxAttribution吗?
Mohammad Dayyan

@MohammadDayyan,您需要参考上面链接的教程
Toms

0

/programming//a/33762133/4355695

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

我尝试了一下并成功了:我不必费心删除当前的基础层(也不必弄清楚哪个是活跃的)。就是myTileLayer.addTo(map)这样:如果它已经是我的基础层的一部分,那么地图会“切换”到它。它会自动删除当前图层并更改为myTileLayer

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.