我有以下ui.R和server.R
我有一个包含3列的简单数据集:人的类型,经度,纬度
我希望Leaflet Map能够对" Person of Type"中的变化作出反应。 <<< 这就是我被困住的地方。 我知道我需要使用某种observeEvent,但不知道如何实现这个
谢谢
ui.R
ui <- fluidPage(
selectInput(inputId = "Selector",
label = "Please Select Type of Person",
choices = c("Please Select:",
"Type A",
"Type B"),
selected = "Please Select:"),
leafletOutput("myMap")
)
shinyApp(ui=ui, server=server)
server.R
library(shiny)
server <- function(input,output){
output$myMap <- renderLeaflet({
leaflet() %>%
addTiles()%>%
addMarkers(data=SampleData,
~Longitude,
~Latitude)
})
}
答案 0 :(得分:1)
不完全确定您希望地图执行的操作,但听起来您正在寻找leafletProxy
。例如,假设您要清除标记并添加新标记。使用addMarkers
时,请务必添加group
参数:
(编辑提供了一个完整的可重复的示例。请注意,我之前给出的答案没有改变,我只是添加了数据和其他闪亮的应用程序结构。请注意,'请选择:'部分被视为这里有效的选择,有更好的方法来处理选择,但这不是这个问题的关键。)
library(shiny)
library(leaflet)
SampleData <- data.frame(type = c('Type A', 'Type B', 'Type A', 'Type B'),
Longitude = c(80.1, 80.2, 80.3, 80.4),
Latitude = c(40.1, 40.2, 40.3, 40.4))
ui <- fluidPage(
selectInput(inputId = "Selector",
label = "Please Select Type of Person",
choices = c("Please Select:",
"Type A",
"Type B"),
selected = "Please Select:"),
leafletOutput("myMap")
)
server <- function(input,output){
output$myMap <- renderLeaflet({
leaflet() %>%
addTiles()%>%
addMarkers(data=SampleData,
~Longitude,
~Latitude,
group = "myMarkers")
})
observeEvent(input$Selector, {
leafletProxy("myMap") %>%
clearGroup("myMarkers") %>%
addMarkers(data = SampleData[SampleData$type == input$Selector, ],
~Longitude,
~Latitude,
group = "myMarkers")
})
}
shinyApp(ui, server)