Я строю листовки с блестящими картами, и идея заключается в том, что пользователь щелкает точку на первой карте, чтобы отфильтровать точки на второй карте.
Мне нужна опция, чтобы сбросить выделение и снова показать все точки на второй карте, нажав на первую карту в неточечной области.
Я нашел этот очень похожий вопрос
Буклет R и блестящий Как очистить карту нажмите данные
но пока не понял, как интегрировать это в мой собственный код.
Вот воспроизводимая версия моего кода:
library(shiny)
library(leaflet)
library(dplyr)
library(tidyverse)
ui <- fluidPage(
leafletOutput("map"),
br(),
leafletOutput("map2")
)
server <- function(input, output, session) {
output$map <- renderLeaflet({
leaflet() %>% addTiles() %>% addCircles(data = quakes) })
output$map2 <- renderLeaflet({
leaflet() %>% addTiles() %>% addCircles(data = quakes)
})
# setting a reactive version for click id
id <- reactive({
if (identical(input$map_shape_click$id, NULL ))
unique(quakes$stations)
else
input$map_shape_click$id}
)
map_data_react <- reactive({
quakes %>%
filter(stations %in% id())
})
output$plot <- renderPlot ({
ggplot(quakes(aes(x = long, y = depth)) %>%
filter(stations %in% id()) %>%
geom_point(aes(x = long, y = depth)))
})
observe({
leafletProxy("map", data = quakes %>% sample_n(100)) %>%
clearShapes() %>%
addCircles(layerId = ~ stations)
})
observe({
leafletProxy("map2", data = map_data_react() )%>%
clearShapes() %>%
addCircles(layerId = ~ stations,
label = ~paste0( stations))
})
}
shinyApp(ui, server)