我正在努力如何在 Shiny 应用程序中以高分辨率保存传单地图。
在以下代码中制作了一张传单地图,可以通过按“下载”按钮下载地图:
library(shiny)
library(htmlwidgets)
library(leaflet)
library(webshot)
ui <- fluidPage(
leafletOutput("map"),
downloadButton("download")
)
server <- function(input, output, session) {
leafletOptions(resolutions = 1200)
global <- reactiveValues(map = 0)
output$map <- renderLeaflet({
global$map <- leaflet() %>%
fitBounds(3.31497114423, 50.803721015, 7.09205325687, 53.5104033474) %>%
addTiles()
})
output$download <- downloadHandler(filename = "map.png", content = function(file)
{
global$map$x$options <- append(global$map$x$options,
list("zoomControl" = FALSE))
saveWidget(global$map,
"temp.html",
selfcontained = FALSE)
webshot("temp.html",
file = file,
zoom = 1,
vwidth = 800,
vheight = 555,
cliprect = "viewport")
})
}
shinyApp(ui = ui, server = server)
使用此代码,我想下载一个包含质量更好的地图的图像文件,即更高的分辨率,尤其是在放大图像时。
我在 webshot 中尝试了“缩放”选项,但这只会使图像变大,质量并没有更好。我在函数“leafletOutput”中看不到任何分辨率参数。我尝试了'leafletOptions(resolutions = ...)',但没有帮助。在函数“saveWidget”中,我添加了“knitrOptions = list(dpi=1200)”作为函数“saveWidget”的参数,但没有成功。
任何想法如何提高在 Shiny 中下载的传单地图的质量?