Я столкнулся с трудностью при создании блестящего приложения.Мне нужна карта, на которой я могу нажимать на города для отображения данных.Я взял что-то похожее на this , чтобы получить простую карту с боковой панелью, содержащей вкладки.
Я хотел бы добавить верхнюю панель, содержащую входные данные, общие для всех вкладок (например, выбор интересующего набора данных, кнопки выбора городов и т. Д.).Но карта заставляет верхнюю панель частично исчезнуть, и я не могу понять, почему и не могу найти решение.
Вот пример:
library(shiny)
library(leaflet)
library(maps)
rm(list = ls())
mapStates = map("world", fill = TRUE, plot = FALSE)
ui <- fluidPage(
fluidRow(
column(width = 4,offset = 2,
wellPanel(selectInput("dataset", "Choose a dataset:",
choices = c("Temperature max" = 1,
"Temperature mean" = 2,
"Temperature min" = 3,
"Precipitation" = 4,
"Snow depth" = 5,
"Maximum wind speed" = 6,
"average win speed" = 7)))
),
column(4,wellPanel(numericInput("citynum", "Number of city to select:", value = 1,min = 1,max = 3,step = 1)))
),
sidebarLayout(
mainPanel(
div(class="outer",
tags$style(type = "text/css", ".outer {position: fixed; top: 0; left: 0; right: 0; bottom: 0; overflow: hidden; padding: 0}"),
leafletOutput("mymap",height = "100%",width = "100%"))
),
sidebarPanel(sliderInput("obs", "Number of observations:",
min = 1, max = 1000, value = 500))
)
)
server <- function(input, output, session) {
output$mymap <- renderLeaflet({
leaflet(data = mapStates, options = leafletOptions(minZoom = 3, maxZoom = 18)) %>%
#clearBounds() %>%
addTiles() %>%
addProviderTiles(providers$Stamen.TonerLite,
options = providerTileOptions(noWrap = TRUE))
})
}
shinyApp(ui, server)
Что приводит к
Здесь у меня нет ни панели, ни числового ввода.Но если я размещу строку жидкости, содержащую мою верхнюю панель, после главной панели, содержащей карту, панель отобразится:
ui <- fluidPage(
sidebarLayout(
mainPanel(
div(class="outer",
tags$style(type = "text/css", ".outer {position: fixed; top: 0; left: 0; right: 0; bottom: 0; overflow: hidden; padding: 0}"),
leafletOutput("mymap",height = "100%",width = "100%"))
),
sidebarPanel(sliderInput("obs", "Number of observations:",
min = 1, max = 1000, value = 500))
),
fluidRow(column(width = 4,offset = 2,
wellPanel(selectInput("dataset", "Choose a dataset:",
choices = c("Temperature max" = 1,
"Temperature mean" = 2,
"Temperature min" = 3,
"Precipitation" = 4,
"Snow depth" = 5,
"Maximum wind speed" = 6,
"average win speed" = 7)))
),
column(4,wellPanel(numericInput("citynum", "Number of city to select:", value = 1,min = 1,max = 3,step = 1)))
)
)
Но этоне в нужном месте.Итак, мои вопросы:
- Как развернуть панель сверху и сохранить карту в натуральную величину с боковой панелью?
- это второстепенный вопрос: как сделать панель долговечнойвесь fluirRow для моей верхней панели?