一个基本的 R Shiny“仪表板”应用程序,带有 2 个侧边栏菜单项,其中一个包含 Leaflet 小部件输出。
重现的错误是-
如果错误重现,地图将不会完全渲染,留下一堆空白。这只能通过再次最小化和最大化窗口来解决。
library(leaflet)
library(magrittr)
library(shiny)
library(shinydashboard)
ui <- dashboardPage(
dashboardHeader(),
dashboardSidebar(
sidebarMenu(
menuItem("Dashboard", tabName = "dashboard"),
menuItem("blankMenuItem", tabName = "blank")
)
),
dashboardBody(
tabItems(
tabItem(tabName = "dashboard",
leafletOutput("map")),
tabItem(tabName = "blank")
)
)
)
server <- function(input, output) {
output$map <- renderLeaflet({
leaflet() %>%
addTiles() %>% # Add default OpenStreetMap map tiles
addMarkers(lng = 174.768, lat = -36.852, popup="The birthplace of R")
})
}
shinyApp(ui, server)
您知道为什么会出现这种行为吗?
在查看半相关问题后能够调整其大小此处。此解决方案会影响所有侧边栏菜单项,修复非渲染传单。使用调整大小事件,不需要用户物理调整窗口大小。
dashboardBody() 内部:
shiny::includeScript("mapresize.js")
mapresize.js 内容:
$(document).on('click', '.sidebar-menu li', function() {
window.dispatchEvent(new Event("resize"));
});