Есть ли возможность раскрасить текст в окне параметров слоя? - PullRequest
0 голосов
/ 01 июля 2019

Мне нужно изменить цвет текста в блоке управления слоями.

Я знаю, что это возможно в Javascript, но мне нужно сделать это в R. Я думаю, что это может быть связано с layersControlOptions функция, но я не могу найти документацию, которая показывает все аргументы для этого.

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

1 Ответ

2 голосов
/ 01 июля 2019

Используя блестящие, вы можете сделать следующее:

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 Viewer (т. Е. Без блестящего) выможет сделать следующее:

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
    )
)

Адаптировано с здесь .

Дальнейшее обновление

В зависимости от необходимости различныхцвета:

В качестве отступления 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, похоже, не различает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...