r - 无响应的 Leaflet 的 addLayersControl()

标签 r leaflet

我正在尝试制作一张 map ,以便我可以选择要显示的数据点组。它确实有效,直到我尝试“改进”我的图例,即通过在其中包含不同类型的标记。

现在,我的点显示正确,图例也显示正确,但是当我取消选中其中一个组时,没有任何反应。知道如何解决这个问题吗?我已经花了几个小时研究它,但还是想不通。

干杯!

这是我的代码:

library("leaflet")

df <- data.frame(name = c("A", "B", "C"),
                 type = c("Always", "Often", "Never"),
                 city = c("Paris", "Marseille", "Bordeaux"),
                 lat = c(48.9, 43.3, 44.8),
                 long = c(2.3, 5.4, -0.6))

#Create list of icons
IconSet <- awesomeIconList(
  "Always"   = makeAwesomeIcon(icon = "map-marker", markerColor = "green", library = "glyphicon"),
  "Often"   = makeAwesomeIcon(icon = "map-marker", markerColor = "blue", library = "glyphicon"),
  "Never" = makeAwesomeIcon(icon = "map-marker", markerColor = "red", library = "glyphicon"))

#Create groups
groups <- c("Always" <- "<div style='position: relative; display: inline-block' class='awesome-marker-icon-green awesome-marker'><i class='glyphicon glyphicon-map-marker icon-white '></i></div>Always displayed",
            "Often" <- "<div style='position: relative; display: inline-block' class='awesome-marker-icon-blue awesome-marker'><i class='glyphicon glyphicon-map-marker icon-white '></i></div>Often displayed",
            "Never" <- "<div style='position: relative; display: inline-block' class='awesome-marker-icon-red awesome-marker'><i class='glyphicon glyphicon-map-marker icon-white '></i></div>Never displayed")

#Create map
m <- leaflet() %>%
  addTiles(options = providerTileOptions(minZoom = 5, maxZoom = 9)) %>% 
  setView(lng = 2.4, lat = 46.5, zoom = 5) %>%
  addAwesomeMarkers(icon = ~IconSet[type],
                    clusterOptions = markerClusterOptions(freezeAtZoom = 9),
                    data = df, lng = ~long, lat = ~lat,
                    group = ~groups[type]) %>% 
  addLayersControl(overlayGroups = groups, options = layersControlOptions(collapsed = FALSE), position = "topleft")
m

最佳答案

我找到了解决方案……这是一个非常愚蠢的问题。

与常规标记不同,data = 显然不能在 addAwesomeMarkers() 中定义,而是在 leaflet() 中定义...

最后一点工作代码变为:

m <- leaflet(data = df) %>% 
addTiles(options = providerTileOptions(minZoom = 5, maxZoom = 9)) %>% 
setView(lng = 2.4, lat = 46.5, zoom = 5) %>% 
addAwesomeMarkers(icon = ~IconSet[type], group = ~groups[type]) %>% 
addLayersControl(overlayGroups = groups, options = layersControlOptions(collapsed = FALSE), position = "topleft") 

关于r - 无响应的 Leaflet 的 addLayersControl(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57169251/

相关文章:

r - 如何匹配 2 个数据框列并提取列值和列名?

r - 如果 which(x) 的长度为 0,为什么 y[-which(x)] 返回一个长度为 0 的向量?

替换数据框中多列的特定字符串

r - 通过排列进行多组测试

javascript - 防止或删除单张效果添加/删除图层

r - 如何在 R 中绘制多种颜色的多段线?

javascript - 使用传单将标记绑定(bind)到 map 中心

string - strsplit 带竖线(管道)

javascript - 放大时重置单张 map 等值线,缩小时将其放回原处

javascript - 如何逐渐放大传单,javascript