我正在尝试将easyPrint插件集成到我的shiny leaflet应用程序中。 我想要的是像演示中的东西,但在shiny中。
我已经尝试模仿示例,但没有成功。
到目前为止,这是我的R代码:
library(shiny)
library(shinydashboard)
library(shinyjs)
library(htmlwidgets)
library(htmltools)
library(leaflet)
library(leaflet.extras)
library(sp)
shinyApp(
ui = fluidPage(
leafletOutput("map", height = 750)
),
server = function(input, output) {
registerPlugin <- function(map, plugin) {
map$dependencies <- c(map$dependencies, list(plugin))
map
}
easyPrintPlugin <- htmlDependency("leaflet-easyprint", "2.1.8",
src = c(href = "https://github.com/rowanwins/leaflet-easyPrint/blob/gh-pages/dist/"),
script = "index.js")
# Map
output$map <- renderLeaflet({
leaflet() %>%
addProviderTiles(providers$CartoDB.Positron) %>%
registerPlugin(easyPrintPlugin) %>%
onRender("function(el, x) {
L.easyPrint({
position: 'topleft',
sizeModes: ['A4Portrait', 'A4Landscape']
}).addTo(map);}")
})
}
)
然而,什么也没有发生。屏幕上只是一片白色。如果我去掉onRender部分,leaflet就正常工作了。 不幸的是,我相对于Shiny、leaflet、.js和github来说比较新,在确定引起问题的方面方面遇到了困难。
onRender
函数中是否使用了map
而不是this
,因为那会导致问题。 - Hallie SwanleafletOutput("map")
在renderUI
中,例如output$UI_map <- renderUI({leafletOutput("map")})
,该怎么办呢?按钮将不会显示在地图上。 - Roman