superzip examples ejemplos r shiny leaflet shinydashboard

examples - Cómo obtener Leaflet for R use 100% de la altura brillante del tablero



shiny r (4)

Esta unidad no funciona para un viejo navegador móvil. Este css a continuación debería funcionar para computadoras y dispositivos móviles.

/* for computer */ div.outer { height: calc(100vh - 80px); padding: 0; margin: 0; min-height: 500px } @media all and (max-width:768px){ /* for mobile */ div.outer { position: fixed; top: 70px; left: 0; right: 0; bottom: 0; overflow: hidden; padding: 0; } }

Estoy en el proceso de crear una aplicación Shiny dashboard, donde se supone que el cuerpo del tablero debe mostrar algunos mapas. Hasta ahora no hay problema para que el mapa se expanda en todo el ancho del cuerpo, pero de alguna manera no está dispuesto a ajustarse a la altura completa.

El folleto ya está configurado para cubrir el 100% de la altura, pero no funciona. Tan pronto como use el atributo de altura para el prospecto, el objeto del folleto no se mostrará y me quedará un cuadro vacío.

El código se puede encontrar a continuación:

library(shinydashboard) library(leaflet) ui <- dashboardPage( dashboardHeader(title = "Basic dashboard"), dashboardSidebar( sidebarMenu( menuItem( "Maps", tabName = "maps", icon = icon("globe"), menuSubItem("Watersheds", tabName = "m_water", icon = icon("map")), menuSubItem("Population", tabName = "m_pop", icon = icon("map")) ), menuItem( "Charts", tabName = "charts", icon = icon("bar-chart"), menuSubItem("Watersheds", tabName = "c_water", icon = icon("area-chart")), menuSubItem("Population", tabName = "c_pop", icon = icon("area-chart")) ) ) ), dashboardBody( tabItems( tabItem( tabName = "m_water", box( title = "Baltic catchment areas", collapsible = TRUE, width = "100%", height = "100%", leafletOutput("l_watershed") ) ), tabItem( tabName = "m_pop", # Map in Dashboard leafletOutput("l_population") ), tabItem( tabName = "charts", h2("Second tab content") ) ) ) ) server <- function(input, output) { set.seed(122) histdata <- rnorm(500) output$l_watershed <- renderLeaflet({ leaflet(height = "100%") %>% addTiles() %>% setView(19.08, 60.25, zoom = 4) %>%addWMSTiles( "http://62.236.121.188/arcgis/services/DataAndMaps/Background/MapServer/WMSServer?", layers = "11", options = WMSTileOptions( format = "image/png", transparent = TRUE ), attribution = "Catchment area provided by HELCOM" ) }) output$l_population <- renderLeaflet({ leaflet(height = "100%") %>% addTiles() %>% setView(19.08, 60.25, zoom = 4) %>%addWMSTiles( "http://62.236.121.188/arcgis/services/DataAndMaps/Background/MapServer/WMSServer?", layers = "17", options = WMSTileOptions( format = "image/png", transparent = TRUE ), attribution = "Population data provided by HELCOM" ) }) } shinyApp(ui, server)


Intente agregar el tamaño de píxel manualmente:

... dashboardBody( tabItems( tabItem( tabName = "m_water", box( title = "Baltic catchment areas", collapsible = TRUE, width = "100%", height = "1000px", leafletOutput("l_watershed",width="100%",height="1000px") ) ), tabItem( tabName = "m_pop", # Map in Dashboard leafletOutput("l_population",width="100%",height="1000px") ), tabItem( tabName = "charts", h2("Second tab content") ) ) ) ...


Otra opción es lo que jcheng5 y kent37 han descrito en GitHub

output$mymap = renderLeaflet({...make a map...}) leafletOutput(''mymap'', height=1000)

Funciona para mí con un leaflet map en R flexdashboard


Personalmente, descubrí que establecer la altura relativa al tamaño de la ventana es más satisfactorio. La altura como porcentaje no funciona, porque el tablero de instrumentos tiene una altura indefinida. Pero en relación con todo el documento está bien.

El 100% de dashoboardBody genera 100vh (ccs3-unit) menos el encabezado (mínimo 50px) menos panel de control relleno de cuerpo (2 * 15px).

Por lo tanto, establezca la altura en 100vh - 80px y debería estar bien.

Como shiny no admite css3-units, esto debe incluirse directamente en el documento, como en el código siguiente.

library(shiny) library(shinydashboard) library(leaflet) ui <- dashboardPage( dashboardHeader(), dashboardSidebar(), dashboardBody( tags$style(type = "text/css", "#map {height: calc(100vh - 80px) !important;}"), leafletOutput("map") ) ) server <- function(input, output) { output$map <- renderLeaflet({ leaflet() %>% addTiles() %>% setView(42, 16, 4) }) } runApp(shinyApp(ui, server), launch.browser = TRUE)

¡Que te diviertas!