gpt4 book ai didi

r - 在 Shiny, R 中列出 Leaflet map 的所有可用 Font Awesome 图标

转载 作者:行者123 更新时间:2023-12-05 08:56:00 26 4
gpt4 key购买 nike

我正在制作一个 Shiny 的应用程序,我希望用户能够选择进入 Awesome 标记的 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")

应该更改为会导致包含所有可用图标的字符串。

非常感谢您的建议!

最好的,吉都

最佳答案

我找到了一种从传单包中收集信息的方法。

您应该能够在传单包中找到一个名为 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 包中的更改会影响这一点。对我来说,它适用于:

  • leaflet_1.1.0
  • stringr_1.2.0
  • readr_1.0.0
  • R 版本 3.3.3 (2017-03-06)

最好的,吉都

关于r - 在 Shiny, R 中列出 Leaflet map 的所有可用 Font Awesome 图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43051080/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com