Как сбросить карту после события R Shiny Leaflet - PullRequest
0 голосов
/ 03 июля 2019

Я строю листовки с блестящими картами, и идея заключается в том, что пользователь щелкает точку на первой карте, чтобы отфильтровать точки на второй карте.

Мне нужна опция, чтобы сбросить выделение и снова показать все точки на второй карте, нажав на первую карту в неточечной области.

Я нашел этот очень похожий вопрос

Буклет 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)
...