我是光头和传单的新手,我会很感激任何指针。下面的代码是尝试在基本地图上映射点。它有效,但不是被动的 这些点来自数据框(从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