图层选项框中是否可以为文本着色?

时间:2019-07-01 12:39:25

标签: r leaflet

我需要在图层控制框中更改文本的颜色。

我知道用Javascript是可行的,但是我需要在R中做到这一点。我认为这可能与layersControlOptions函数有关,但是我找不到任何能显示所有此参数的文档。

addLayersControl(
    baseGroups = c("OSM (default)", "Toner", "Toner Lite"),
    overlayGroups = c("Quakes", "Outline"),
    options = layersControlOptions(collapsed = FALSE)
)

1 个答案:

答案 0 :(得分:2)

使用闪亮,您可以执行以下操作:

library(shiny)
library(leaflet)

ui <- fluidPage(
    leafletOutput('map'),

    # Add custom CSS & Javascript;
    tags$style(".leaflet-control-layers-expanded{color: red}")
)

server <- function(input, output, session) {
  output$map <- renderLeaflet({
      leaflet(quakes) %>% 
          addTiles() %>% 
          addMarkers() %>% 
          addLayersControl(
              baseGroups = c("OSM (default)", "Toner", "Toner Lite"),
              overlayGroups = c("Quakes", "Outline"),
              options = layersControlOptions(collapsed = FALSE)
          )
  })
}

shinyApp(ui, server)

关键行是tags$style(".leaflet-control-layers-expanded{color: red}")。使用颜色名称,十六进制颜色代码或RGB颜色代码根据需要编辑红色。

更新

要在“ RStudio查看器”窗格中显示(即不发光),您可以执行以下操作:

library(leaflet)
library(htmltools)

m <- leaflet(quakes) %>% 
     addTiles() %>% 
     addMarkers() %>% 
     addLayersControl(
         baseGroups = c("OSM (default)", "Toner", "Toner Lite"),
         overlayGroups = c("Quakes", "Outline"),
         options = layersControlOptions(collapsed = FALSE)
     )

browsable(
    tagList(
        tags$style(".leaflet-control-layers-expanded{color: red}"),        
        m
    )
)

改编自here

进一步更新

根据对不同颜色的需求:

form.leaflet-control-layers-list可以替代.leaflet-control-layers-expanded

.leaflet-control-layers-base.leaflet-control-layers-overlays之间存在如下拆分:

library(shiny)
library(leaflet)

ui <- fluidPage(
    leafletOutput('map'),

    # Add custom CSS & Javascript;
    tags$style(".leaflet-control-layers-base{color: red}",
               ".leaflet-control-layers-overlays{color: blue}")
)

server <- function(input, output, session) {
  output$map <- renderLeaflet({
      leaflet(quakes) %>% 
          addTiles() %>% 
          addMarkers() %>% 
          addLayersControl(
              baseGroups = c("OSM (default)", "Toner", "Toner Lite"),
              overlayGroups = c("Quakes", "Outline"),
              options = layersControlOptions(collapsed = FALSE)
          )
  })
}

shinyApp(ui, server)

image

不幸的是,由于css似乎没有区别,我还没有找到如何按特定的行着色的方法。

相关问题