【问题标题】:Interactive Map in R using leaflet/ShinyR中使用传单/闪亮的交互式地图
【发布时间】:2016-02-18 04:09:37
【问题描述】:

我想创建一个带有侧边栏的地图,您可以在其中选择时间段的范围。这个想法是地图只显示在此期间开业的酒店的标记。我不知道这样做,所以我尝试使用 selectInput 代替,因为它对我来说似乎更容易一些。但似乎我仍然无法让它工作。任何指导将不胜感激。

这是示例数据框:

Hotel Year   lat        long
  A   2000 41.886337 -87.628472
  B   2005 41.88819  -87.635199
  C   2010 41.891113 -87.63301

这是 ui.R:

#ui.R
library(shiny)
library(leaflet)

shinyUI(fluidPage(
  titlePanel("Hotel Map"),
  sidebarLayout(
    sidebarPanel(
      selectInput("year", 
                  label = "Choose Year:",
                  choices = c(2000,2005,2010),
                  selected = 2000
      )),

    mainPanel (leafletOutput("map","100%",300))
  )
))

这是服务器。R:

library(shiny)
library(leaflet)
source("RStudio\\Map-app")
hotels <- read.csv("RStudio\\Map-app\\ChicagoHotels.csv")

shinyServer(
  function(input, output) {

    output$map <- renderLeaflet({
    df <- hotels[hotels$Year == input$year,]  
    leaflet()  %>%
        addTiles() %>%
        addCircles(data = df)
    })

  }
    )

【问题讨论】:

  • 到目前为止你有什么代码?
  • SO 不是代码编写服务。已经有很多关于带有传单/闪亮的SO示例
  • @alistaire & @Mlavoie 谢谢你们的cmets。我修改了我的问题。如果您能提出任何建议,将不胜感激。

标签: r dictionary shiny leaflet


【解决方案1】:

@InfiniteFlashChess 没错。

服务器.R

library(leaflet)

hotels <- read.table(text = "Hotel Year  latitude        longitude
                              A   2000  41.886337      -87.628472
                              B   2005  41.88819       -87.635199
                              C   2010  41.891113      -87.63301", 
                     header = TRUE)

shinyServer(function(input, output) {

output$map <- renderLeaflet({
  df <- hotels[hotels$Year == input$year,]  
  leaflet()  %>%
    addTiles() %>%
    addMarkers(data = df)
 })

})

Ui.R

library(shiny)
library(leaflet)

shinyUI(fluidPage(
titlePanel("Hotel Map"),
 sidebarLayout(
  sidebarPanel(
   selectInput("year", 
               label = "Choose Year:",
               choices = c(2000,2005,2010),
               selected = 2000
  )),

mainPanel (leafletOutput("map","100%",300))

              )
))

【讨论】:

  • 谢谢!那行得通。我认为源函数搞砸了。
【解决方案2】:

首先,您应该首先了解 mainPanel 正在做什么。 mainPanel 不会接受

leafletMap("map","100%",300)

它需要你输入这个代替:

leafletOutput("map", "100%", 300)

或其他一些相关的leafletOutput 语句。

shiny 的设计方式,如果要输出图形或表格,则需要在 server.R 文件中创建 output$map 对象,回到 ui.R 并且您的图形只会基于特定输出语句的输出。

此页面包含大量示例和帮助。

Leaflet link you should really look at, so click me!

感谢您顺便向我介绍leaflet,这是一个比googleVis 包的gvisGeoMap 功能更好的工具。

【讨论】:

  • 如果你把它贴在OP里,那更好地让别人看到。
  • 感谢您的 cmets。我还在学习如何四处走动。请参阅修订后的 OP,如果您能提出任何建议,将不胜感激。
  • 非常感谢您指出这一点。但是,即使我更改了输出语句,我仍然难以显示地图。很高兴向您介绍了传单。
猜你喜欢
  • 2018-12-03
  • 2021-10-14
  • 2020-04-16
  • 2019-05-20
  • 2018-10-25
  • 1970-01-01
  • 2023-03-24
  • 1970-01-01
  • 2021-06-14
相关资源
最近更新 更多