按下 R 中的传单弹出窗口时如何创建事件?
How to create an event when pressing on a leaflet popup in R?
我想在单击 Leaflet 多边形时使 tabPanel 在 Shiny 中发生变化。我有几个关于如何做到这一点的想法,但我找不到实现它们所需的信息。我在 tabPanel 中有传单,但我想在单击多边形时切换到另一个选项卡。
leaflet(llmap) %>%
addTiles() %>%
addPolygons(stroke = F,
fillOpacity = .8,
smoothFactor = .5,
color=~pal(x),
popup = pop)
我想过制作popup=updateTabsetPanel(session="New Tab")
,但那行不通。我的另一个想法是在用户点击一个新的多边形时调用 updateTabsetPanel(session="New Tab")
,但我不知道我需要什么事件 return 让它知道一个新的多边形被点击或者即使弹出一个新的弹出窗口。有人知道吗?
这是一个在您单击多边形时更新的反应函数示例:
output$myMap <- renderLeaflet({
map_out() #this is just a function that returns a leaflet map
})
output$MyGraph <- renderPlot({
event <- input$myMap_shape_click #Critical Line!!!
... #Code to run here
GraphData <- GraphData[event$id] # subsetting example
}
})
这里有几点需要注意:
input$myMap_shape_click
会根据您在上面对地图的称呼进行更改。我把它命名为myMap
,所以结构如图。如果您使用 output$YourMap
进行初始化,则将使用 input$YourMap_shape_click
调用点击
您点击的多边形的 ID 可以通过 event$id
访问。这对于基于单击的多边形进行子集化+绘图非常有用。也可以访问 event$lat
和 event$lng
renderPlot
可以是任何反应函数。如果它不依赖于特定的输出,您可以使用 observe
如下所示。这样,只要单击多边形,您的代码就会 运行。这是因为每次点击时 input$myMap_shape_click
的值都会改变。
我以前没有用过 updateTabsetPanel
,但我想这会起作用:
observe({
event <- input$myMap_shape_click
updateTabsetPanel(session, "inTabset", selected = event$id)
})
这会将选项卡切换到与您单击的多边形具有相同 ID 的面板。
我想在单击 Leaflet 多边形时使 tabPanel 在 Shiny 中发生变化。我有几个关于如何做到这一点的想法,但我找不到实现它们所需的信息。我在 tabPanel 中有传单,但我想在单击多边形时切换到另一个选项卡。
leaflet(llmap) %>%
addTiles() %>%
addPolygons(stroke = F,
fillOpacity = .8,
smoothFactor = .5,
color=~pal(x),
popup = pop)
我想过制作popup=updateTabsetPanel(session="New Tab")
,但那行不通。我的另一个想法是在用户点击一个新的多边形时调用 updateTabsetPanel(session="New Tab")
,但我不知道我需要什么事件 return 让它知道一个新的多边形被点击或者即使弹出一个新的弹出窗口。有人知道吗?
这是一个在您单击多边形时更新的反应函数示例:
output$myMap <- renderLeaflet({
map_out() #this is just a function that returns a leaflet map
})
output$MyGraph <- renderPlot({
event <- input$myMap_shape_click #Critical Line!!!
... #Code to run here
GraphData <- GraphData[event$id] # subsetting example
}
})
这里有几点需要注意:
input$myMap_shape_click
会根据您在上面对地图的称呼进行更改。我把它命名为myMap
,所以结构如图。如果您使用output$YourMap
进行初始化,则将使用input$YourMap_shape_click
调用点击
您点击的多边形的 ID 可以通过
event$id
访问。这对于基于单击的多边形进行子集化+绘图非常有用。也可以访问event$lat
和event$lng
renderPlot
可以是任何反应函数。如果它不依赖于特定的输出,您可以使用observe
如下所示。这样,只要单击多边形,您的代码就会 运行。这是因为每次点击时input$myMap_shape_click
的值都会改变。
我以前没有用过 updateTabsetPanel
,但我想这会起作用:
observe({
event <- input$myMap_shape_click
updateTabsetPanel(session, "inTabset", selected = event$id)
})
这会将选项卡切换到与您单击的多边形具有相同 ID 的面板。