【问题标题】:Creating interactive Leaflet map in R with shiny用闪亮的R在R中创建交互式传单地图
【发布时间】:2018-12-03 20:45:57
【问题描述】:

我用传单创建了一个闪亮的应用程序,效果很好。

library(shiny)
library(shinythemes)
library(leaflet)

ui2 <- fluidPage(theme = shinytheme("united"), tabsetPanel(

  tabPanel(
           titlePanel("titel"),
           
           mainPanel(
             
             leafletOutput(outputId = "mymap")),
           
           sidebarPanel(
             fluidRow(
               
               dateRangeInput("a", h4("date"),language = "en",separator = " to "),
               selectInput("select", h4("location"),
                           c(data8$city)),
               submitButton("search"))
           ))
  )
)

server <- function(input, output) {
  
  popupa <- paste(titel)
    
  output$mymap <- renderLeaflet({
    leaflet(data8) %>%
      addTiles() %>%
      addMarkers(lng = ~lng, lat = ~lat, popup = popupa)
  }) 
}
shinyApp(ui2, server)

但目前我正在尝试在我显示的位置上将dateRangeInput 添加到filter(date_start)。但我不知道如何将我的dateRangeInputselectInput 连接到服务器部分中的传单功能。此外,在地图下方应该有一个表格,其中包含地图中过滤后的位置 - 这可能吗?

我使用的数据框如下所示:

title=c("Event1","Event2")
lng=c(23.3, 23.3)
lat=c(30, 40)
city=c("Berlin", "Hamburg" )
zip=c(39282, 27373)
date_start=c("2018-05-28","2018-05-28")
date_end=c("2018-06-27","2018-08-03")
data8 <- data.frame(title, lng, lat, city, zip, date_start, date_end)

有谁知道如何完成这项工作?感谢您的每一个帮助! 问候

【问题讨论】:

  • 不清楚你想如何过滤你的数据集。 date_start? date_end?
  • 对 date_start 很抱歉

标签: r shiny leaflet r-leaflet


【解决方案1】:

你可以试试这个:

ui2 <- fluidPage(theme = shinytheme("united"), tabsetPanel(

  tabPanel(
    titlePanel("titel"),

    mainPanel(

      leafletOutput(outputId = "mymap"),
      dataTableOutput("mytable")),

    sidebarPanel(
      fluidRow(

        dateRangeInput("a", h4("date"),language = "en",separator = " to "),
        selectInput("selectLoc", h4("location"),
                    as.character(data8$city)),
        submitButton("search"))
    ))
)
)

server <- function(input, output) {

  popupa <- paste("titel")

  datatoPlot <- reactive({


    date_start <- as.character(input$a[1])
    date_end <- as.character(input$a[2])

    data8$date_start <- as.Date(data8$date_start, format = "%Y-%m-%d")
    data8 <- data8[as.Date(data8$date_start) >= date_start & as.Date(data8$date_start) <= date_end, ]
    data8 <- data8 %>% dplyr::filter(city == input$selectLoc)

  })

  output$mymap <- renderLeaflet({
    leaflet(datatoPlot()) %>%
      addTiles() %>%
      addMarkers(lng = ~lng, lat = ~lat, popup = popupa)
  }) 


  output$mytable <- renderDataTable(datatoPlot())

}
shinyApp(ui2, server)

【讨论】:

  • 是的,这个解决方案非常棒!你能告诉我如何以同样的方式使用位置字段吗?我已经尝试使用 as.character(input$select[1]) 在 data0Plot
猜你喜欢
  • 2021-10-14
  • 1970-01-01
  • 2019-05-20
  • 2018-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多