我有一个从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
)
非常感谢任何对正确方向的想法或推动!
答案 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)
})