checkboxGroupInput后的反应映射

时间:2016-08-13 11:28:36

标签: r shiny leaflet

我是光头和传单的新手,我会很感激任何指针。下面的代码是尝试在基本地图上映射点。它有效,但不是被动的 这些点来自数据框(从CSV导入),我可以映射。但是,在应用程序的顶部,我创建了一个复选框,让用户选择功能。我们的想法是选择将确定向前传递哪些行,从而确定映射哪些点。这是我挣扎的一步。在代码中,我现在从数据框传递完整的可能点列表,而不是从过滤的输出(复选框输入)传递。如何传递过滤过程的结果?

我的方法是使用坐标获取cols以使用cbind()创建数据框,并将其传递给points;但也许可以直接从过滤后的数据中传递相关的cols。谢谢。

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


parks <- read.csv("data.csv")

r_colors <- rgb(t(col2rgb(colors()) / 255))
names(r_colors) <- colors()

ui <- fluidPage(
  # First row for selectInputs
  fluidRow(
    column(4,
           checkboxGroupInput(inputId = "d_Governorate",
                              label = "Governorate:",
                              choices = c("All",
                                          unique(as.character(parks$Governorate))),
                              selected = "All"
                              )
    ),

    leafletOutput("d_map")
  )
)



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

  points <- reactive({
    validate(
      need(input$d_Governorate != "", 'Please choose at least one feature.')
    )
    temp <- select(parks, lon, lat)
    if (input$d_Governorate != "All") {
      temp <- filter(parks, Governorate %in% input$d_Governorate) %>% 
        select(lon, lat)
    }
    temp
  }),

  output$d_map <- renderLeaflet({
    leaflet() %>%
      addProviderTiles("Stamen.TonerLite",
                       options = providerTileOptions(noWrap = TRUE)
      ) %>%
      addMarkers(data = points())
  })
}

shinyApp(ui, server)

DATA: https://www.dropbox.com/s/3nq07fbyurur8ec/data.csv?dl=0

0 个答案:

没有答案