我想要一个Shiny App,我希望用户能够选择进入Awesome Marker的Font Awesome图标。
这是一个简单的应用程序,可让用户选择标记颜色,图标颜色和图标(名称)。
library(shiny)
library(leaflet)
icon_names <- c("home", "map-pin")
marker_colours <- list(Standard = c('red', 'orange', 'beige', 'green', 'blue', 'purple',
'pink', 'cadetblue', 'white', 'grey', 'black'),
Shades = c('darkred', 'lightred', 'darkgreen', 'lightgreen',
'darkblue', 'lightblue', 'darkpurple', 'lightgray'))
server <- function(input, output) {
output$map <- renderLeaflet({
icons <- awesomeIcons(
icon = input$icon,
iconColor = input$icon_colour,
library = 'fa',
markerColor = input$marker_colour
)
leaflet() %>%
addTiles() %>%
addAwesomeMarkers(lng = 4.9,
lat = 52.38,
icon = icons
)
})
}
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
selectInput("icon", "Icon:",
choices = icon_names, selected = "home"),
selectInput("marker_colour", "Marker colour:",
choices = marker_colours, selected = "red"),
selectInput("icon_colour", "Icon colour:",
choices = c("#ffffff", "#000000"), selected = "#ffffff")
),
mainPanel(leafletOutput("map"))
)
)
shinyApp(ui = ui, server = server)
但现在我想要一种方法来访问R包Leaflet中可用的所有可能的FA图标。
所以代码的一点
icon_names <- c("home", "map-pin")
应该更改为会导致包含所有可用图标的字符串的内容。
非常感谢您的建议!
最佳, 克里希
答案 0 :(得分:4)
我找到了一种从传单包中收集信息的方法。
你应该能够在名为font-awesome.min.css的传单包中找到一个文件,你可以在那里提取信息。
file_text <- readr::read_file(
paste0(.libPaths()[1],
"/leaflet/htmlwidgets/plugins/Leaflet.awesome-markers/font-awesome.min.css")
)
图标名称收集在'fa-'和':'之间。
icon_names <- stringr::str_extract_all(file_text, "(fa-)([^:]+)")[[1]]
快速浏览显示前36个条目不是我想要的,正如您可以通过查看整个css文件看到的。
icon_names <- icon_names[-(1:36)] %>%
stringr::str_sub(4, -1)
我认为Leaflet包中的更改会影响这一点。对我来说,它适用于:
最佳, 克里希