传单renderLeaflet不起作用

时间:2015-12-28 15:53:31

标签: r maps shiny leaflet

我正在使用传单包绘制地图并在图上绘制lat和long。 我在R中做跟随。

m <- leaflet() %>%
addTiles() %>%  # Add default OpenStreetMap map tiles
addMarkers(lng=df_final$order_long, lat=df_final$order_lat)
m

它在R控制台中运行得非常好。但是当我在闪亮的时候使用它时它不起作用 这是我的ui.r代码段

tabPanel("Order Locations", leafletOutput("map", width = "80%", height =  
"80%"))

这是server.r代码段

 output$map<- renderLeaflet({

 dataset<-dataUpload()
 leaflet() %>%
 addTiles() %>%  # Add default OpenStreetMap map tiles
 addMarkers(lng=dataset$order_long,lat=dataset$order_lat)
 })

它不显示任何内容。我哪里弄错了。请帮忙

3 个答案:

答案 0 :(得分:8)

这是有效的,我尽可能接近你的。它显然不喜欢百分比高度:

library(shiny)
library(leaflet)

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

ui <- fluidPage(
  actionButton("recalc", "New points"),
  mainPanel(
    tabsetPanel(
      tabPanel("Order Locations", leafletOutput("map",width="80%",height="400px")),
      tabPanel("Markers", verbatimTextOutput("markers"))
    )
  )
)

if (!file.exists("df_final.csv")){
  nmark <- 50
  hv <- 80
  df_final <- data.frame(order_long=runif(nmark,-hv,hv),
                         order_lat=runif(nmark,-hv,hv))
  write.csv(df_final,"df_final.csv",row.names=F)
}

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

  dataUpload <- reactiveFileReader(1000, session, 'df_final.csv', read.csv)

  output$map <- renderLeaflet({
    leaflet() %>%
      addTiles() %>%
      addMarkers(lng=dataUpload()$order_long,lat=dataUpload()$order_lat)
  })
  output$markers <- renderPrint({print(dataUpload())})
}

shinyApp(ui, server)

产量:

enter image description here

答案 1 :(得分:2)

工作了。问题在于ui.r文件。

这是修改后的代码

tabPanel("Order Locations", leafletOutput("map"))

摆脱宽度和高度参数,它使用默认设置。

答案 2 :(得分:1)

派对有点晚,但您可以添加自己的CSS来控制传单的美学,通常在www文件夹中,例如www/styles.css,它还具有响应窗口大小变化的额外好处。

  /* styles.css */
  div.outer {
  position: fixed;
  top: 45px; /* set to fit nicely with Shinydashboard's dashboardHeader(), adjust according to your own preferences. */
  left: 0;
  right: 0;
  bottom: 0;
  overflow-y: auto;
  padding: 0;
}

并在div()中的ui中添加此课程:

ui <- fluidPage(
 actionButton("recalc", "New points"),
 mainPanel(
  tabsetPanel(
   tabPanel("Order Locations", 
            div(
             class = "outer",
             tags$head(
              includeCSS("www/styles.css")
             ),
             leafletOutput("map",width="100%",height="100%")
             )
            ),
   tabPanel("Markers", verbatimTextOutput("markers"))
  )
 )
)

结果: enter image description here