我正在尝试编写一个应用程序,允许用户通过 checkboxGroupInput 选择多组点,并让传单地图显示具有相应纬度/经度的关联点。我的数据框如下:
x3 = structure(list(
species = c("Duck", "Duck", "Goose", "Goose", "Swan", "Swan"),
lat = c(42, 43, 47, 38, 40, 40),
long = c(-110, -88, -122, -77, -112, -109)),
row.names = c(NA, 6L), class = "data.frame")
使用此数据框,我预计每个物种会出现两个点,如果选中所有三个物种框,则最多会同时出现六个点。但是,我无法一次显示两个以上的点。如果一次只选中一个框,则这些点是正确的,但当选中两个或更多框时,会显示两个类别中每一类别的一个点,而其他点会丢失。我的代码如下:
library(shiny)
library(leaflet)
#create dataframe
x3 = structure(list(
species = c("Duck", "Duck", "Goose", "Goose", "Swan", "Swan"),
lat = c(42, 43, 47, 38, 40, 40),
long = c(-110, -88, -122, -77, -112, -109)),
row.names = c(NA, 6L), class = "data.frame")
#setup user interface
ui = fluidPage(
titlePanel("Bird Map"),
sidebarLayout(
sidebarPanel = sidebarPanel(
checkboxGroupInput(inputId = "species1",
label = "Species",
choices = list("Duck",
"Goose",
"Swan"),
selected = "Duck"),
),
#Main panel appearance
mainPanel = mainPanel(
leafletOutput(outputId = 'map')
)
)
)
#Reactive server function
server = function(input, output){
map_x3 = reactive({
x3 %>%
filter(species == input$species1)
})
#Leaflet map output
output$map = renderLeaflet({
leaflet(map_x3()) %>%
addTiles() %>%
setView(lng = -90, lat = 36.2, zoom = 4)%>%
clearShapes() %>%
addMarkers(label = ~ species)
})
}
#Run app
shinyApp(ui = ui, server = server)
我尝试了不同的方式来显示数据、简化的和更复杂的数据集、observe () 部分以及其他反应式表达式。问题仍然存在,尽管对于较大的数据集,我通常能够同时显示两个以上的点(尽管在选中多个框时所有点都不可见)。