2

我有一个传单地图,我已经按照此处的建议进行了修改,以便为弹出窗口提供一个特殊的 CSS 。现在我想将结果保存为 HTML 网页。生成的对象类型为shiny.tag.list,我可以使用查看器查看并使用Export->Save as web page按钮手动导出为 HTML。但是,我找不到执行相同操作的 R 代码。我已经尝试过包中的函数和中的mapshot函数,但是这些都失败并出现错误:mapviewsaveWidgethtmltools

> saveWidget(lf,"test.html")
Error in .getNamespace(pkg) : 
 invalid type/length (symbol/0) in vector allocation

我也尝试过包的save_html功能htmltools,但这会生成一个不是独立的 HTML 文件。

我该如何准确地完成Export->Save as web page按钮对 R 代码的作用?

下面是一些示例代码来演示这些问题:

library(sf)
library(leaflet)
library(htmltools)
library(mapview)

x = data.frame(lat=c(44,45),lon=c(3,2),
               label=c("p1","p2"))

x = st_as_sf(x,coords=c("lon","lat"),crs=4326)

lf = x %>% leaflet %>% addTiles() %>% addMarkers(label=~label,popup=~label)
st = browsable(
  tagList(list(
    tags$head(
      tags$style(".leaflet-popup-content-wrapper {background-color: #ff0000;}")
    ),
    lf
  ))
)

saveWidget(st,"test.html") # Fails with error
mapshot(st,"test.html") # Fails with same error
save_html(st,"test.html") # Produces HTML with external dependencies
4

1 回答 1

1

我遇到了同样的问题并解决了htmlwidgets::prepandContent

library(sf)
library(leaflet)
library(htmltools)
library(mapview)
library(htmlwidgets)

x = data.frame(lat=c(44,45),lon=c(3,2),
               label=c("p1","p2"))

x = st_as_sf(x,coords=c("lon","lat"),crs=4326)

lf = x %>% leaflet %>% addTiles() %>% addMarkers(label=~label,popup=~label)


st = lf %>% prependContent(
    tags$head(
      tags$style(".leaflet-popup-content-wrapper {background-color: #ff0000;}")
    )
    )

saveWidget(st,"test.html") # works!
于 2020-08-04T20:48:32.953 回答