如何在Leaflet for R中基于addLayerControl()隐藏/切换图例

Yoo*_*izz 6 r legend leaflet

我想知道如何在Leaflet for R中基于addLayerControl()隐藏/切换图例?切换选项层a时,addPolygons()不会显示选项层b的数据,因为我可以使用GROUP。但是,addLegend()选项不具有GROUP功能,因此当我选择组图层a(红色)时,我无法隐藏组图层b(蓝色)的图例:

在此处输入图片说明

来源:https : //gis.stackexchange.com/questions/214773/how-to-hide-toggle-legends-with-layer-controls-in-leaflet-for-r

你有什么想法吗?

问候,

乔里斯

小智 5

如果将来有人在研究这个,那么有一种新的可行方法。

如果您使用的是开发/Github 版本的leaflet包,addLegend()现在支持grouplayerId参数。

(运行命令devtools::install_github('rstudio/leaflet')安装)

即使是最新的 CRAN 版本 (1.1.0) 也支持layerID.

假设您使用开发版本,以下代码应该可以工作:

leaflet() %>%
    #Polygon Layers
    addPolygons(data = exampleDataOne, group = "Group A") %>%
    addPolygons(data = exampleDataTwo, group = "Group B") %>%

    #Legend Layers
    addLegend(values = exampleValuesOne, group = "Group A", 
              position = "bottomright") %>%
    addLegend(values = exampleValuesTwo, group = "Group B",
              position = "bottomright") %>%

    #Layers Control
    addLayersControl(overlayGroups = c("Group A","Group B"),
              options = layersControlOptions(collapsed = FALSE))
Run Code Online (Sandbox Code Playgroud)

这应该具有仅在相应图层处于活动状态时显示图例的预期效果。

一个潜在的问题是,默认情况下,所有leaflet层都处于活动状态。如果您有重叠的多边形,这可能会导致地图的视觉吸引力降低。而且,如果您有多个图例,这也将是一个问题。

您可以做的是使用该hideGroup()功能。

如果您只想Group A在启动时激活上述示例,则可以添加

%>% hideGroup("Group B")

到上面代码块的末尾。