0

我正在努力如何在 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 中下载的传单地图的质量?

4

0 回答 0