2016-08-22 362 views
2

雖然代碼在閃亮之外自行工作,但我無法獲取傳單地圖以在我的閃亮應用中渲染。我沒有得到任何錯誤,所以我卡住了,任何幫助表示讚賞。Shiny/Leaflet map not rendering

樣本數據:

cleanbuffalo <- data.frame(name = c("queen","toni","pepper"), 
          longitude = c(31.8,32,33), 
          latitude = c(-24,-25,-26)) 

閃亮UI:

vars <- c(
    "Pepper" = "pepper", 
    "Queen" = "queen", 
    "Toni" = "toni" 
) 

shinyUI(navbarPage("Buffalo Migration", id ="nav", 

    tabPanel("Interactive Map", 

div(class="outer", 

    leafletOutput("map", width = "100%", height = "100%"), 
    #Panel Selection 
    absolutePanel(id = "controls", class = "panel panel-default", fixed = TRUE, 
     draggable = TRUE, top = 60, left = "auto", right = 20, bottom = "auto", 
     width = 330, height = "auto", 

     h2("Buffalo Migration"), 
     #Buffalo Group selection 
     checkboxGroupInput(
     "checkGroup", label = h3("Select Buffalo to Follow"), 
     choices = vars, 
     selected = 1) 
     ) 
     ) 
    ) 
) 
) 

閃亮服務器:

library(shiny) 
library(dplyr) 
library(leaflet) 
library(scales) 
library(lattice) 

shinyServer(function(input, output, session) { 
    output$map <- renderLeaflet({ 
    leaflet() %>% addTiles() %>% setView(lng = 31.88, lat = -25.02, zoom=1) 
    }) 

回答

4

它不會因爲leafletOutput的height參數的工作。奇怪的是,如果你在%中指定它,地圖不會顯示出來,但是如果你使用「px」(或者一個將被強制轉換爲字符串並且附加有「px」的數字),它確實可以正常工作。

leafletOutput("map", width = "75%", height = "500px")產量:

enter image description here

我不知道爲什麼會這樣,但如果你想在%指定leafletOutput的高度,你可以把它包裝成一個div,並給予適當的高度。


默認情況下,寬度設置爲100%,高度設置爲400px。所以,你不必指定這些參數 - 只有當我想改變輸出的大小時纔會這樣做。

leafletOutput(outputId, width = "100%", height = 400) 
+1

這解決了我的問題,謝謝。我從來沒有想到這是問題。 – josh453

+1

'?shiny :: plotOutput'中的文檔給出了原因:「請注意,對於高度,使用」auto「或」100%「通常無法按預期工作,因爲如何使用HTML/CSS計算高度。」 – SymbolixAU

+1

加上幾個github問題[這裏](https://github.com/rstudio/shiny/issues/705)[和這裏](https://github.com/rstudio/shiny/issues/650),for例子進一步解釋 – SymbolixAU