我想在Shiny的选项卡面板中展示一张传单地图。然而,问题是数据点圆在初始时不会呈现。只有在我移动滑块后,圆圈才会显示在地图上。当我点击选项卡面板时,是否可以显示圆圈?
下面是一个使用地震数据的例子。
library(shiny)
library(leaflet)
ui <- navbarPage("Shiny app",
tabPanel("Empty"),
navbarMenu("Quakes",
tabPanel("Quakes map",
bootstrapPage(
sidebarLayout(
sidebarPanel(top = 10, right = 10,
sliderInput("range", "Magnitudes", min(quakes$mag), max(quakes$mag),
value = range(quakes$mag), step = 0.1)
),
mainPanel(
leafletOutput("map")
)
)
)
)
)
)
server <- function(input, output, session) {
filteredData <- reactive({
quakes[quakes$mag >= input$range[1] & quakes$mag <= input$range[2],]
})
output$map <- renderLeaflet({
leaflet(quakes) %>% addTiles() %>%
fitBounds(~min(long), ~min(lat), ~max(long), ~max(lat))
})
observe({
leafletProxy("map", data = filteredData()) %>%
clearShapes() %>%
addCircles(radius = ~10^mag/10, weight = 1, color = "#777777",
fillOpacity = 0.7, popup = ~paste(mag)
)
})
}
shinyApp(ui, server)
没有理由仅仅为了使用反应数据而使用output$map
和代理(或者可能我错过了什么(。您可以简单地在原始renderLeaflet()
:中使用filteredData()
server <- function(input, output, session) {
filteredData <- reactive({
quakes[quakes$mag >= input$range[1] & quakes$mag <= input$range[2],]
})
output$map <- renderLeaflet({
leaflet(filteredData()) %>% addTiles() %>%
fitBounds(~min(long), ~min(lat), ~max(long), ~max(lat)) %>%
addCircles(radius = ~10^mag/10, weight = 1, color = "#777777",
fillOpacity = 0.7, popup = ~paste(mag)
)
})
}