mus*_*a00 5 r leaflet shiny r-leaflet
我需要向地图上的每个现有标记添加标签(不是弹出窗口)。我创建了labelText
存储标签 HTML 的变量。现在,当我使用它时,奇怪的事情发生了 - 每个标签显示来自整个数据集的数据,而不是分配给单个点的数据:
library(shiny)
library(leaflet)
library(dplyr)
library(sf)
ui <- fluidPage(
leafletOutput("map")
)
server <- function(input, output, session) {
coords <- quakes %>%
sf::st_as_sf(coords = c("long","lat"), crs = 4326)
labelText <- paste0("<b>Depth: </b>",coords$depth,"<br/>",
"<b>Mag: </b>",coords$mag,"<br/>",
"<b>Stations: </b>",coords$stations)
output$map <- leaflet::renderLeaflet({
leaflet::leaflet() %>%
leaflet::addTiles() %>%
leaflet::setView(172.972965,-35.377261, zoom = 4) %>%
leaflet::addCircleMarkers(
data = coords,
stroke = FALSE,
radius = 6,
label = ~htmltools::HTML(labelText)
#label = ~htmltools::htmlEscape(labelText)
#label = ~labelText
)
})
}
shinyApp(ui, server)
Run Code Online (Sandbox Code Playgroud)
我尝试了HTML
和的不同组合htmlEscape
(或没有),但它仍然无法正常工作。您可以取消注释代码label
并测试其工作原理。我需要的是 html 样式的标签,其中包含每个单独标记的数据。
如果你将函数传递给向量,它就可以lapply
正常HTML
工作labeltext
:
leaflet::addCircleMarkers(
data = coords,
stroke = FALSE,
radius = 6,
label = lapply(labelText, htmltools::HTML)
)
Run Code Online (Sandbox Code Playgroud)