【问题标题】:How to "save" click events in Leaflet Shiny map如何在 Leaflet Shiny 地图中“保存”点击事件
【发布时间】:2017-04-27 15:43:18
【问题描述】:

我想做的很简单。我希望能够将所有点击事件保存在 Shiny/Leaflet 地图上。下面是一些示例代码:

library(raster)
library(shiny)
library(leaflet)

#load shapefile
rwa <- getData("GADM", country = "RWA", level = 1)

shinyApp(
  ui = fluidPage(
    leafletOutput("map")
  ), 

  server <- function(input, output, session){

    #initial map output
    output$map <- renderLeaflet({
      leaflet() %>% 
        addTiles() %>% 
        addPolygons(data = rwa, 
                    fillColor = "white", 
                    fillOpacity = 1, 
                    color = "black", 
                    stroke = T, 
                    weight = 1, 
                    layerId = rwa@data$OBJECTID, 
                    group = "regions")
    }) #END RENDER LEAFLET

    observeEvent(input$map_shape_click, {

      #create object for clicked polygon
      click <- input$map_shape_click

      print(click$id)

    }) #END OBSERVE EVENT
  }) #END SHINYAPP

如您所见,当我点击一个多边形时,我可以打印点击 ID(或整个点击事件)。很容易。但是,当我单击另一个多边形时,有关我第一个单击的多边形的所有信息都会丢失。我看到observeEvent 中有一个autoDestroy = F 的参数选项,但我不确定如何使用它来保存以前单击的多边形。有没有一种方法可以将我的所有点击次数/click$ids 存储在向量或列表中?

【问题讨论】:

    标签: r click shiny leaflet


    【解决方案1】:

    您可以使用reactiveValues 来存储点击次数。

    在你的服务器函数顶部添加

    RV<-reactiveValues(Clicks=list())
    

    然后将您的 observeEvent 更改为:

    observeEvent(input$map_shape_click, {
    
          #create object for clicked polygon
          click <- input$map_shape_click
          RV$Clicks<-c(RV$Clicks,click$id)
          print(RV$Clicks)
    
     }) #END OBSERVE EVENT
    

    每次点击时,id 都会附加到存储在RV$Clicks 中的点击的list 中。这不一定是list,如果对您更好,您可以将其设为vector

    【讨论】:

    • 谢谢,这就行了!我已经掌握了观察事件的窍门,但我似乎还不能掌握反应式。对 Shiny 来说还是很陌生。
    • @Lauren 值得注意的是 reactiveValuesreactive() 函数不同。两者本身都非常有用
    • @John Paul,@SymbolixAU,如果我将我的 observeEvent 更改为 observe,我的第一次点击元素(显然)会无限重复。关于为什么会发生这种情况/如何解决它的任何见解?还是我应该发布另一个问题?
    • @Lauren - 看到这个解决方案回答了你原来的问题,现在你有一个新问题,你应该发布一个新问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-18
    • 2017-10-30
    • 2018-07-12
    • 2016-01-13
    • 2016-05-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多