html - 带有 HTML 标签的传单 r 中的标签

标签 html r leaflet r-leaflet

所有善良的灵魂,需要帮助。我正在创建传单 map ,但无法解决标签的奇怪问题。我创建了几个变量的标签,如果第一个变量是数字,标签渲染正常,但如果第一个变量是字符串,它们就会失败——知道有什么问题吗? 让我们从一个虚拟的 spdf 开始:

library(htmltools)
library(sp)
library(leaflet)

df <- new("SpatialPointsDataFrame", data = structure(list(PMID = c(184397, 184397), SPACEID = c("184397_1", "184397_2")), .Names = c("PMID", "SPACEID"), row.names = 1:2, class = "data.frame"), coords.nrs = numeric(0), coords = structure(c(-0.14463936, -0.14468822, 51.50726534, 51.50730171), .Dim = c(2L, 2L), .Dimnames = list(c("1", "2"), c("x", "y"))), bbox = structure(c(-0.14468822, 51.50726534, -0.14463936, 51.50730171), .Dim = c(2L, 2L), .Dimnames = list(c("x", "y"), c("min", "max"))), proj4string = new("CRS", projargs = "+proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0"))

现在我们 (m) 应用一个简单的 HTML 行(原来使用 df 行,但它不是必需的,可以简化为

df@data$HT<-mapply(function(x,y){htmltools::HTML(sprintf("<h2>%s</h2> %s",x,y))},1,"L", SIMPLIFY = F) 

这个会很好用。但如果顺序颠倒——我们改为 ("L",1) 而不是 (1,"L") - 它会失败:

df@data$HT<-mapply(function(x,y){htmltools::HTML(sprintf("<h2>%s</h2> %s",x,y))},"L",1, SIMPLIFY = F) 

在第一种情况下, map 包含正确的标签,而在另一种情况下,它产生空标签

leaflet() %>%
addTiles() %>%
addMarkers(data = df, label = ~ HT)

如果我使用 label = ~as.character(HT) 它将生成一个逐字的 HTML 标记,而不是标签。有什么问题吗?

最佳答案

在研究代码之后,我发现将 purrr 包中的 mapply() 替换为 map2() 就可以解决问题。我不完全确定为什么会这样。 Slav 和我都确认这个解决方案在我们的机器上运行。

library(sp)
library(leaflet)
library(htmltools)
library(purrr)

df@data$HT1 <- map2(1, "L", ~htmltools::HTML(sprintf("<h2>%s</h2> %s",.x,.y))) 
df@data$HT2 <- map2("L", 1, ~htmltools::HTML(sprintf("<h2>%s</h2> %s",.x,.y))) 

leaflet()%>%
addProviderTiles("OpenStreetMap.Mapnik") %>%
addLabelOnlyMarkers(data = df, label = ~HT2, 
                    labelOptions = labelOptions(noHide = TRUE, direction = 'center',
                                                textOnly = FALSE, textsize = "15px"))

enter image description here enter image description here

关于html - 带有 HTML 标签的传单 r 中的标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48339827/

相关文章:

javascript - 将参数从 HTML 传递给 AJAX 函数

javascript - 如何让我的模糊动画每次都运行得更快?

r - 对R中事物类型的全面考察; 'mode' 和 'class' 和 'typeof' 不足

r - 使用字符串变量在 R 函数内部传递多个变量信息

r - R中嵌套循环的性能缓慢

javascript - 使用 Leaflet JS 返回最近特征 (json) 多边形的标题

php - 用 PHP 或 HTML 绘制图表

javascript - 输入价格后如何在表格中添加另一行并计算金额(数量*价格)?

javascript - 如何在传单中显示单个国家多边形并将其居中?

javascript - 从jade发送参数到js/node