Блестящий selectInput не реагирует на выбор вкладки - PullRequest
0 голосов
/ 17 февраля 2020

Вот моя проблема, у меня есть пара вкладок, и я пытаюсь обновить карту в соответствии с выбором в функции 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)

Спасибо за вашу помощь.

...