Я создал карту буклета в приложении Shiny. Теперь мне нужна кнопка загрузки, так что пользователь может загрузить отображаемую карту, включая все маркеры, полигоны и т.д. В формате pdf.
Я нашел это решение, как сохранить карту буклета в R: Как сохранить листок в карте R в виде файла png или jpg?
Но как он работает в Shiny? Я сохранил пример кода простым, но думаю об этом, как если бы было много изменений в карте через leafletProxy(), прежде чем пользователь захочет сохранить карту в формате pdf.
Это моя попытка, но она не работает.
server.R
library(shiny)
library(leaflet)
library(devtools)
install_github("wch/webshot") # first install phantomjs.exe in your directory
library(htmlwidgets)
library(webshot)
server <- function(input, output){
output$map <- renderLeaflet({
leaflet() %>% addTiles()
})
observe({
if(input$returnpdf == TRUE){
m <- leafletProxy("map")
saveWidget(m, "temp.html", selfcontained = FALSE)
webshot("temp.html", file = "plot.pdf", cliprect = "viewport")
}
})
output$pdflink <- downloadHandler(
filename <- "map.pdf",
content <- function(file) {
file.copy("plot.pdf", file)
}
)
}
ui.R
ui <- fluidPage(
sidebarPanel(
checkboxInput('returnpdf', 'output pdf?', FALSE),
conditionalPanel(
condition = "input.returnpdf == true",
downloadLink('pdflink')
)
),
mainPanel(leafletOutput("map"))
)