如何渲染 HTML 风格的传单标签?

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 样式的标签,其中包含每个单独标记的数据。

Hub*_*rtL 7

如果你将函数传递给向量,它就可以lapply正常HTML工作labeltext

leaflet::addCircleMarkers(
        data = coords,
        stroke = FALSE,
        radius = 6,
        label = lapply(labelText, htmltools::HTML)
      )
Run Code Online (Sandbox Code Playgroud)