传单输入 $MAPID_center 返回 NULL

Leaflet input$MAPID_center returning NULL

我正在使用 Shiny 构建地图,并希望在变量 'lt' 和 'ln' 中捕获地图中心的纬度和经度。我正在使用下面的代码,但是,当它是 运行 时,我得到 'lt' 和 'ln'.

的 NULL 值
library(shiny)
library(leaflet)
library(leaflet.extras)

server <- function(input, output, session){

output$map <- renderLeaflet({
    leaflet() %>%
    addProviderTiles(providers$OpenStreetMap) %>%
    setView(lng = 147.842393, lat = -24.000942, zoom = 6) %>% 
    addSearchOSM(options = searchOptions(collapsed = TRUE))
})

observeEvent(input$MAPID_center, {
    lt <- input$MAPID_center$lat
    ln <- input$MAPID_center$lng
})

})

如果你想在全局环境中使用这些变量,你可以使用 <<- 运算符。

library(shiny)
library(leaflet)
library(leaflet.extras)

server <- function(input, output, session){
  
  output$map <- renderLeaflet({
    leaflet() %>%
      addProviderTiles(providers$OpenStreetMap) %>%
      setView(lng = 147.842393, lat = -24.000942, zoom = 6) %>% 
      addSearchOSM(options = searchOptions(collapsed = TRUE))
  })
  
  observeEvent(input$MAPID_center, {
    lt <<- input$MAPID_center$lat
    ln <<- input$MAPID_center$lng
  })
  
}

你的MAPID错了。

您已将地图输出定义为 output$map。所以 map 在这种情况下是您的 ID

当你想“观察”这张地图时,你需要观察input$map_...个物体

这是一个工作示例

library(shiny)
library(leaflet)
library(leaflet.extras)

ui <- fluidPage(
  leaflet::leafletOutput(
    outputId = "map"
  )
)

server <- function(input, output, session){
  
  output$map <- renderLeaflet({
    leaflet() %>%
      addProviderTiles(providers$OpenStreetMap) %>%
      setView(lng = 147.842393, lat = -24.000942, zoom = 6) %>% 
      addSearchOSM(options = searchOptions(collapsed = TRUE))
  })
  
  observeEvent(input$map_center, {
    lt <- input$map_center$lat
    ln <- input$map_center$lng
    
    print(lt); print(ln)
    
  })
  
}

shinyApp(ui, server)