如何将Leaflet弹出窗口中的信息传递给Shiny输出?

时间:2015-12-04 18:54:46

标签: r shiny leaflet

我有一个从shapefile和人口统计数据创建的Leaflet地图(myMap)。地图显示多边形(县)。当我自己运行这个地图时 - 或者当我从Shiny中渲染它时 - 我可以点击一个县,县ID会显示在我创建的弹出窗口中。

我想弄清楚的是如何从Shiny内部访问我的弹出值(ID)。例如,在我的Shiny应用程序中,我想点击该县并将县ID输出到文本显示或存储为变量。

以下是相关代码:

ui <- dashboardPage(
  dashboardBody(fluidRow(
    box(width = 9, status = "info", title = "CountyMap",
    leafletOutput("myMap"))
)

server <- function(input, output) {
  output$myMap <- renderLeaflet({map2})

  observe({
  event <- input$myMap_shape_click
  if (is.null(event))
  return()

  print(map2$county)  # I know that's not correct,
                      # but I want the county id from my leaflet popup!

  val <- map2$county  # Obviously not correct either, 
  })                  # but I would like to store this data

如果这有帮助,我从Shiny(上面)调用的Leaflet地图看起来像这样,其中“mapable”是一个大的空间多边形数据框:

popup <- paste0("ID: ", mapable$countyID)

map2 <-leaflet() %>%
     addPolygons(data = mapable, 
                 popup = popup
     ) 

非常感谢任何对正确方向的想法或推动!

1 个答案:

答案 0 :(得分:2)

感谢user5219763向我发送了关于layerId参数的内容!我回到我的传单地图并为layerID添加了矢量化参数。在我的例子中,我使用了用于地图的“大空间多边形数据框”中的“GEO_ID”列创建了一个值向量。

geoID <- as.vector(mapable$GEOID)

map2 <-leaflet() %>%
     addPolygons(data = mapable, 
                 layerId = geoID,
                 popup = popup
     )

当我运行闪亮的应用程序并单击多边形(县)时,我可以测试是否也传递了layerId:

  observe({
    event <- input$myMap_shape_click
    if (is.null(event))
      return()
    print(event)      
  })