R Shiny Leaflet单击事件后如何重设地图

时间:2019-07-03 14:38:52

标签: r shiny leaflet

我正在构建带有光泽的传单地图,其想法是用户单击第一张地图中的一个点以过滤第二张地图中的点。

我想要一个选项来重置选择,并通过单击非点区域中的第一个地图来再次显示第二个地图中的所有点。

我发现了一个非常相似的问题

R leaflet and shiny How to clear map click data

,但还没有弄清楚如何将其集成到我自己的代码中。

这是我的代码的可复制版本:

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)

0 个答案:

没有答案