【问题标题】:Add different legends in different layers on leaflet map in R在R中的传单地图上的不同图层中添加不同的图例
【发布时间】:2016-10-14 22:27:15
【问题描述】:
library(leaflet)
library(htmltools)
library(htmlwidgets)
library(dplyr)
#
df1 <- data.frame(points=c("p1", "p2"), lat=c(49.47259, 49.48095), long=c(-103.7054, -103.6126), value=c(50.34, 100.25))
df2 <- data.frame(points=c("p1", "p2"), lat=c(49.47809, 49.66849), long=c(-103.5614, -103.0224), value=c(300.56, 505.34))
#
pal1 <- colorNumeric(
palette = "PRGn",
domain = df1$value
)
#
pal2 <- colorNumeric(
palette = "PRGn",
domain = df2$value
)
#
n <- leaflet() %>% addTiles(group="1st layer") %>% addTiles(group="2nd layer") %>%
addCircles(data=df1, lng=~long, lat=~lat, weight = 3, radius=250, color = ~pal1(value),
         stroke = TRUE, fillOpacity = 0.8,group="1st layer") %>%
addCircles(data=df2, lng=~long, lat=~lat, weight = 3, radius=250, color = ~pal2(value),
         stroke = TRUE, fillOpacity = 0.8,group="2nd layer") %>%
addLegend("bottomright", pal = pal1, values = df1$value, title = "legend_df1") %>%
addLegend("topright", pal = pal2, values = df2$value, title = "legend_df2") %>%
addLayersControl(baseGroups=c("1st layer","2nd layer"),
               options=layersControlOptions(collapsed = F))
n

我希望当我点击“第一层”时,只会出现“legend_df1”,当我点击“第二层”时,只会出现“legend_df2”而“legend_df1”会消失。因此,在每一层中都会出现不同的图例,而不是两个图例一起出现。有人可以帮帮我吗?

【问题讨论】:

  • 我可能错了,但我不认为这是可能的,目前还没有!
  • 它不可用,但我认为mapview 正在努力添加此功能。

标签: r leaflet


【解决方案1】:

现在可以使用overlayGroups

library(leaflet)

df1 <- data.frame(points=c("p1", "p2"), lat=c(49.47259, 49.48095), long=c(-103.7054, -103.6126), value=c(50.34, 100.25))
df2 <- data.frame(points=c("p1", "p2"), lat=c(49.47809, 49.66849), long=c(-103.5614, -103.0224), value=c(300.56, 505.34))

pal1 <- colorNumeric(
  palette = "inferno",
  domain = df1$value
)

pal2 <- colorNumeric(
  palette = "viridis",
  domain = df2$value
)

leaflet() %>% 
  addProviderTiles(providers$CartoDB.DarkMatter) %>% 
  addCircleMarkers(data=df1, lng=~long, lat=~lat, 
                   color = ~pal1(value),
                   group="group_1") %>%
  addCircleMarkers(data=df2, lng=~long, lat=~lat, 
                   color = ~pal2(value),
                   group="group_2") %>%
  addLegend("bottomright", pal = pal1, title="grp1",
            values = df1$value, group="group_1") %>%
  addLegend("bottomright", pal = pal2, title="grp2",
            values = df2$value, group="group_2") %>%
  addLayersControl(overlayGroups = c("group_1","group_2"),
                   options = layersControlOptions(collapsed = FALSE))

【讨论】:

    猜你喜欢
    • 2020-07-15
    • 2017-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-04
    • 2023-03-09
    • 1970-01-01
    相关资源
    最近更新 更多