2017-12-10 19 views
1

shinyapps에서 리플릿 라이브러리를 사용하고 있습니다. 사용자 입력 드롭 다운 선택에 따라 아이콘으로 저장 한 마커를 표시하려고합니다. 아래 예에서는 사용자 입력에 따라 마커를 필터링 할 수 없습니다. 반짝임없이 전단지 패키지 만 사용하여 실행하면 비슷한 코드가 작동합니다.addMarkers는 전단지에서 데이터 필터링을 허용하지 않습니다.

아래 샘플 코드는 shiny의 server.r에 있습니다.

filteredData <- reactive({ 
    sampling_data[sampling_data$county == input$county_select, ] 
    }) 

    theData <- filteredData() 
    leafletProxy("mapData") %>% 
     clearMarkers() %>% 
     addMarkers(lng = sampling_data$lon, 
       lat = sampling_data$lat, 
       clusterOptions = markerClusterOptions()) 
    }) 

    output$mapData <- renderLeaflet({ 
    leaflet(sampling_data) %>% 
     addProviderTiles(providers$Esri.WorldTopoMap) %>% 
     setView(lng = -75, lat = 43, zoom = 6) 
    }) 
    observe({ 
    theData <- filteredData() 
    leafletProxy("mapData") %>% 
     clearMarkers() %>% 
     addMarkers(lng = sampling_data$lon, 
       lat = sampling_data$lat, 
       clusterOptions = markerClusterOptions()) 
    }) 

이 코드는, 반짝없이, 당신은 당신의 observe 블록에 표시 할 leafletProxy 필요

subsetData <- sampling_data %>% 
    filter(county == "Albany") 

    leaflet(subsetData) %>% 
    addTiles() %>% 
    addMarkers(lng = ~lon, 
      lat = ~lat) 
+0

잘 작동하는 addCirceMarkers와 코드를 공유해 주실 수 있습니까? – Seymour

+0

안녕하세요, @Seymour입니다. 나는 질문을 제기하는 데 오류를 만들었습니다. 나는이 코드가 단지 전단지를 사용하여 빛나지 않고 작동한다고 말하고자한다. 그러나 반짝 반짝 빛나는 아래에서 전단지를 실행할 때 끊어집니다. – user1432882

답변

1

잘 작동합니다.

library(shiny) 
library(dplyr) 
library(leaflet) 

ui <- fluidPage(

    mainPanel(
    leafletOutput("map"), 
    sliderInput("depth", "Depth", 
       min = min(quakes$depth), 
       max = max(quakes$depth), 
       value = c(min(quakes$depth), max(quakes$depth)) 
    ), 
    textOutput("value") 
) 

) 

server <- function(input, output) { 

    filteredData <- reactive({ 

    quakes %>% 
     filter(depth >= input$depth[1] & depth <= input$depth[2]) 

    }) 

    output$value <- renderText({paste("min: ", input$depth[1], " max: ", input$depth[2])}) 

    output$map <- renderLeaflet({ 

    leaflet(quakes) %>% 
     fitBounds(~min(long), 
       ~min(lat), 
       ~max(long), 
       ~max(lat)) 

    }) 

    observe({ 

    leafletProxy("map") %>% 
     clearTiles %>% 
     clearMarkers %>% 
     addTiles %>% 
     addMarkers(lng = filteredData()$long, lat = filteredData()$lat) 

    }) 

} 

shinyApp(ui = ui, server = server)