传单输入$MAPID_center返回NULL

问题描述 投票:0回答:2

我正在使用 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
})

})

r shiny r-leaflet
2个回答
0
投票

你的

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)


0
投票

如果您希望在全局环境中使用这些变量,您可以使用

<<-
运算符。

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
  })
  
}
© www.soinside.com 2019 - 2024. All rights reserved.