2015-10-14 1 views
0

Код ниже - это утонченная версия блестящего приложения, которое я пишу. Проблема в том, что маркеры не исчезнут, если соответствующие флажки не отмечены в списке флажков. В этом примере я рассмотрел решения от here и here, но никто не работает, поэтому я полагаю, что мне что-то не хватает. Любая помощь высоко ценится!Очистить фигуры в листовке на основе блестящей checkboxGroupInput

#Read source data 
mydat <- data.table(entitynum=c(400, 201, 602, 304), 
        londd=c(20, 38, 96, 32), 
        latdd=c(60, 56, 30, 31), 
        flag=c("karoo", "water", "saida", "nina")) 

#Set up ui 
ui <- shinyUI(fluidPage(title="", 

    #App title 
    titlePanel(h3("My tool", align="left")), 

    #App layout 
    sidebarLayout(position="left", 

    #App sidePanel content and styles 
    sidebarPanel(h5("", width=2), 
       checkboxGroupInput(inputId="InFlags", label=h4("Flag"), 
            choices=setNames(object=c("karoo", "water", "saida", "nina"), 
                nm=c("karoo", "water", "saida", "nina"))), 
       position="left"), 

    #App mainPanel content and styles 
    mainPanel(fluidRow(leafletOutput(outputId="lmap"))) 

) 
) 
) 

#Set up server 
server <- function(input, output){ 
#Build leaflet map 
lmap <- leaflet(data=mydat)%>% 
      addProviderTiles(provider="MapQuestOpen.OSM")%>% 
      fitBounds(~min(londd), ~min(latdd), ~max(londd), ~max(latdd)) 

#Filter data 
datFilt <- reactive(mydat[flag%in%input$InFlags]) 

#Add markers based on selected flags 
observe({ 

if(nrow(datFilt())==0) {print("Nothing selected");leafletProxy("lmap") %>% clearShapes()} 
    else{ 

    print(paste0("Selected: ", unique(input$InFlags))) 

    leafletProxy("lmap", data=datFilt())%>%clearShapes()%>% 
    addCircleMarkers(lng=~londd, lat=~latdd, 
        clusterOptions=markerClusterOptions(), weight=3, 
        color="#33CC33", opacity=1, fillColor="#FF9900", 
        fillOpacity=0.8)%>% clearShapes() 
} 

}) 

output$lmap <- renderLeaflet(lmap) 
} 

#Run app 
shinyApp(ui = ui, server = server) 

ответ

1

Привет вам нужно использовать clearMarkerClusters вместо clearShapes, например :

observe({ 
    if(nrow(datFilt())==0) { 
    print("Nothing selected") 
    leafletProxy("lmap") %>% clearMarkerClusters() 
    } 
    else{ 
    print(paste0("Selected: ", unique(input$InFlags))) 
    leafletProxy("lmap", data=datFilt()) %>% 
     clearMarkerClusters() %>% 
     addCircleMarkers(lng=~londd, lat=~latdd, 
         clusterOptions=markerClusterOptions(), weight=3, 
         color="#33CC33", opacity=1, fillColor="#FF9900", 
         fillOpacity=0.8) 
    } 
}) 

 Смежные вопросы

  • Нет связанных вопросов^_^