在R中的小册子上重置输入$ map_marker_click

时间:2018-06-17 14:27:05

标签: r shiny r-leaflet

我正在建立一个根据用户选择的时间段显示船只/船只的应用程序:

  y <- reactive({
    noEst2 <- V_Dim_Voyage %>% 
      filter(CompleteGMT>(Sys.Date()), CompleteGMT<= (Sys.Date()+input$voydays)) %>%
      group_by(Fkey_Dim_Vessel_Id) %>% slice(which.max(CommenceGMT))

    noEst <- bind_rows(noEst,noEst2)
    y <- x %>% filter(Dim_Vessel_Id %in% unique(noEst$Fkey_Dim_Vessel_Id))
    })

y是一种被动反应,它基本上根据用户输入(input$voydays)过滤数据帧。

然后根据y中的值绘制传单地图。

  output$posListMap <- renderLeaflet({
      leaflet(y()) %>% addTiles() %>% 
        addProviderTiles(providers$Esri.WorldTopoMap) %>% 

        addMarkers(lng=~lon,lat=~lat,label = ~boatName)
    })

然后,用户可以点击船只,并根据此信息,在侧栏栏中显示与船只航行有关的特定信息。我为此使用observe

  observe({
    click <- input$posListMap_marker_click
    if(is.null(click))
      return()
    ShipName <- y()[which(y()$lat == click$lat & y()$lon == click$lng), ]$VesselName

    Shipcargo <- V_Dim_Voyage %>% 
      filter(some conditions..) %>% 
      group_by(some variable..) %>% 
      top_n(4, voyNum) 

    output$cargoDT <- renderTable({
      Shipcargo 
    })
})

我面临的问题是,假设根据当前选择,input$voydays的值为10.这会在y中生成某些船只,然后用户点击特定的船只并且在UI上呈现Shipcargo表。但是,现在,如果input$voydays的值更改为4,则Shipcargo表中显示值的船只不再存在于y中,从而导致错误。在选择input$voydays(UI上是sliderInput)之前,是否有某些方法可以重置标记点击甚至?

0 个答案:

没有答案