【问题标题】:Is there an option to colour text in the layer options box?图层选项框中是否有为文本着色的选项?
【发布时间】:2019-07-01 12:39:25
【问题描述】:

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

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

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

【问题讨论】:

  • 您可以在闪亮中添加 css 样式。您如何显示地图 - 使用闪亮或其他方式?

标签: r leaflet


【解决方案1】:

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

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)

不幸的是,我还没有找到如何通过特定线条着色,因为 css 似乎没有区别。

【讨论】:

  • 这是否允许您为框中的不同线条添加不同的颜色,或者在此示例中整个东西必须是红色的?
  • 此示例将使所有文本变为红色。如果你愿意,我可以看看不同的颜色?检查元素允许您查看 css。
  • 如果可能的话,不同的颜色会很好,谢谢,这个解决方案让我大部分时间都在那里!
猜你喜欢
  • 2017-12-11
  • 1970-01-01
  • 1970-01-01
  • 2013-03-23
  • 2019-08-12
  • 2013-09-15
  • 2014-10-17
  • 2010-10-02
  • 2017-12-02
相关资源
最近更新 更多