clearShapes()不工作 - 用于R的leaflet()

Jer*_*ser 4 r leaflet shiny

我无法弄清楚为什么clearshapes()不在我的传单闪亮计划中工作.我正在尝试删除现有的圈子,并替换为基于我所拥有的输入复选框选择的类别.然而,发生的事情是新圆圈覆盖在现有圆圈之上.

有没有遇到过这个?

df = read.csv("mappingData.csv",header=T, sep =",")

ui = fluidPage(
  checkboxGroupInput("set", label = "Pothole Reported by:",
                     choices = list("Citizens Connect App" = "Citizens Connect App", 
                                    "City Worker App" = "City Worker App",
                                    "Constituent Call" = "Constituent Call",
                                    "Self Service" = "Self Service",
                                    "Employee Generated" = "Employee Generated",
                                    "Not Available (Cambridge)" = "")),

  verbatimTextOutput("value"),

  leafletOutput("map")
)


server <- function(input, output) {

  filteredDataCheck <- reactive({
    # subset(df, Source == input$set)
    print(input$set)
  })

  output$value <- renderPrint ({ filteredDataCheck() })

  filteredData <- reactive({
    df[as.character(df$Source) == input$set, ]
  })


  output$map <- renderLeaflet ({
    leaflet(df) %>%
      setView(-71.083, 42.353, 13) %>%
     addProviderTiles("Stamen.TonerLite", options = providerTileOptions(noWrap=T))
  })

  observe({
    leafletProxy("map", data = filteredData() ) %>% clearShapes() %>%
      addCircles(radius = 1, color = "red", group = "circles") %>% clearShapes()

  })

}

shinyApp(ui = ui, server = server)
Run Code Online (Sandbox Code Playgroud)

Nic*_*icE 11

filteredData()空的时候看起来有问题.您可以尝试添加if/else:

if(nrow(filteredData())==0) { leafletProxy("map") %>% clearShapes()} 
else {
    leafletProxy("map", data = filteredData() ) %>% clearShapes() %>%
      addCircles(radius = 1, color = "red", group = "circles")
    }
Run Code Online (Sandbox Code Playgroud)

此外,如果您想要所有已选择的数据点Source,您可能希望使用%in%而不是==在过滤中:

df[as.character(df$Source) %in% input$set, ]
Run Code Online (Sandbox Code Playgroud)

  • 谢谢!这是众所周知的问题还是应该报道? (2认同)