Вот моя проблема, у меня есть пара вкладок, и я пытаюсь обновить карту в соответствии с выбором в функции selectInput()
. Параметр select
в inputSelect()
активирован и указывает на Los Angeles
, который должен активировать функцию ObserveEvent()
или Observe()
, но не при нажатии на вкладку Map
в первый раз. Однако я понял, что функция setView()
не обновляется при нажатии на вторую вкладку, даже если в selectInput()
установлена опция selected
. Я хочу setView()
, который реагирует на опцию selected
при первом нажатии на вкладке. Опция selectize
не приносит никакой разницы. Вот пример того, что я хотел бы повторить.
library(shiny)
library(leaflet)
ui = bs4DashPage(
h1('Exemple'),
br(),
bs4TabSetPanel(id = 'tabs',
side = 'left',
bs4TabPanel(tabName = 'First tab',
active = TRUE,
'Here is some text'),
bs4TabPanel(tabName = 'Second tab',
active = FALSE,
fluidRow(bs4Card(title = 'Inputs',
solidHeader = TRUE,
width = 2,
closable = FALSE,
selectInput(inputId = 'city',
label = 'Select a city',
choices = c('New York','Los Angeles','Seattle'),
selected = 'Los Angeles',
selectize = TRUE)),
bs4Card(title = "Map",
width = 10,
leafletOutput('map'))
)))
)
server <- function(input, output, session) {
output$map <- renderLeaflet({
leaflet() %>%
addTiles() %>%
setView(lng = -95.7129,lat = 37.0902, zoom = 3)
})
observeEvent(input$city, {
if(input$city == 'New York'){
lon <- -74.0060
lat <- 40.7128
} else if(input$city == 'Los Angeles'){
lon <- -118.2437
lat <- 34.0522
} else{
lon <- -122.3321
lat <- 47.6062
}
leafletProxy('map') %>%
setView(lng = lon, lat = lat, zoom = 5)
})
}
shinyApp(ui, server)
Спасибо за вашу помощь.