【问题标题】:r leaflet layers control (addLayersControl) does not hide legends belonging to a groupr 传单图层控件(addLayersControl)不隐藏属于组的图例
【发布时间】:2020-05-12 04:59:31
【问题描述】:

在下面显示的小例子中,我有两个与地图中每个国家(多边形)相关的特征,即:randomA、randomB。每个特征都有自己的图例,所以我武装了一个名为“randomA”的组,其中包含用特征 randomA 着色的多边形及其相应的图例。我对组“randomB”做了同样的事情。描绘地图时,传单正确显示或隐藏特征“randomA”和“randomB”的多边形。然而,图例总是堆叠在右下角。 这是代码:

library(rgdal)
library(leaflet)

# From http://data.okfn.org/data/datasets/geo-boundaries-world-110m
countries <- readOGR("json/countries.geojson")
n <- nrow(countries)

# Add two random fields
set.seed(15)
countries@data$randomA <- rnorm(n, 1000, 250)
countries@data$randomB <- rnorm(n, 10000, 3000)

map <- leaflet(countries) %>% addTiles()

pal <- colorNumeric(
  palette = "YlGnBu",
  domain = countries$randomA
)

map <- map %>%
  addPolygons(stroke = FALSE, smoothFactor = 0.2, fillOpacity = 1,
              color = ~pal(randomA), group = "randomA"
  ) %>%
  addLegend("bottomright", pal = pal, values = ~randomA,
            title = "random A",
            labFormat = labelFormat(prefix = "$"),
            opacity = 1, group = "randomA"
  )

qpal <- colorQuantile("RdYlBu", countries$gdp_md_est, n = 5)
map <- map %>%
  addPolygons(stroke = FALSE, smoothFactor = 0.2, fillOpacity = 1,
              color = ~qpal(randomB), group = "randomB"
  ) %>%
  addLegend(
    "bottomright",
    pal = qpal, 
    values = ~randomB, 
    opacity = 1, group = "randomB"
  )

# Finally control layers:
map <- map %>%
  addLayersControl(
    baseGroups = c("randomA", "randomB"),
    position = "bottomleft",
    options = layersControlOptions(collapsed = F)
  )

map

结果快照如下图所示:

另外,在实际问题中,我必须代表其中的九个组,所以我希望所有的传说都在同一个地方。 你有什么建议吗?

【问题讨论】:

    标签: r leaflet r-leaflet


    【解决方案1】:

    尝试使用覆盖组而不是基本组:

    addLayersControl(
    overlayGroups = c("randomA", "randomB"),
    position = "bottomleft",
    options = layersControlOptions(collapsed = F)
    

    )

    【讨论】:

    • 但是,这并不能解决图例堆叠在右下角的问题。
    • 是否允许您打开和关闭它们?
    • 是的,它允许我打开和关闭它们,但它们会留在原处。
    • 那没用...对于传单和 rbokeh,我不得不发布修改一些 javascript 或 JSON 来让事情像在他们的本地创建一样无缝地做我想做的事情环境......这可能是那些时代之一。尝试搜索 JS 实现,看看有哪些解决方案,然后打开 JS 文件?
    猜你喜欢
    • 1970-01-01
    • 2014-09-08
    • 2018-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-22
    相关资源
    最近更新 更多