2017-04-24 32 views
0

我已經在ui.R和server.R文件中設置了此問題的示例。這是ui.R文件。有三個隨機數據集。無論用戶界面做什麼,都會顯示帶有標記的人。另外兩個數據集只有在被要求作爲「圈子」時才能被繪製。使用UI打開和關閉數據和傳單顯示

library(shiny) 
library(leaflet) 
pageWithSidebar(
    headerPanel("Main Title Here"), 
    sidebarPanel(
     checkboxInput('Circles', 'Show Locations', TRUE) 
    ), 

    mainPanel(
     leafletOutput("map") 
    ) 

) 

該映射由server.R生成,如下所示。這將生成隨機數據和緯度和經度位置。

library(shiny) 
library(leaflet) 
library(ggplot2) 

shinyServer(function(input, output) { 
    output$map <- renderLeaflet({ 
     leaflet() %>% 
      addTiles(group = "OpenStreetMap") %>% 
      addMarkers(runif(20,-75,-74), 
        runif(20, 41, 42)) 
    }) 
    observe({ 
     proxy <- leafletProxy("map") 
     if (input$Circles == TRUE) { 
      proxy %>% addCircles(runif(20,-75,-74), 
          runif(20, 41, 42), 
          group = "Circles", 
          color = "red") %>% 
      addCircles(runif(20,-75,-74), 
        runif(20, 41, 42), 
        group = "Circles", 
        color = "blue") %>% 
      addLegend(
       position = "bottomright", 
       colors = c("red", "blue"), 
       labels = c("Group 1", "Group 2") 
      ) 
     # cannot put group or label on legend. 
     } else { 
      proxy %>% hideGroup("Circles") 
      # %>% hideGroup("Group 2") 
     } 
    }) 
}) 

程序啓動時顯示圓圈(TRUE)。我在這裏看到兩個主要問題。首先,可以關閉這些圈子,但這是任何UI控件的結束。問題是他們不能再次打開。如果我嘗試啓動checkboxInput爲FALSE,UI控件將不會打開它。我不知道這是否標準,或者如果我做錯了什麼。

第二個主要問題是我無法將圖例編程爲與圓圈一起關閉。使用hideGroup()函數關閉這些圓圈。這被拒絕在圖例上使用。我已經接受了我嘗試的命令並將其轉換爲註釋行。繼續並刪除#號,以便您可以看到它創建的錯誤。我還沒有找到替代方案。

+0

'hideGroup'的對面是'showGroup'。一旦你隱藏了它們,如果你想看到它們,你需要再次'展示'它們。 – SymbolixAU

+0

這些圓圈的原始創建是使用命令「addCircles()」。我會將它們替換爲showGroup,還是以某種方式與addCircles結合? –

+0

你可能需要'addCircles()'到原來的'leaflet()'調用。然後'代理'事件或者'show'或'hide',這取決於'input $ Circles'的條件 – SymbolixAU

回答

0

我想感謝SymblixAU寄給我正確的方向。 hideGroup和showGroup的問題是這兩個函數都需要少量的變量。數據顯示必須由其他命令預先定義,例如addCircles或addMarkers。我終於有了一個工作版本,如下圖所示:

library(shiny) 
library(leaflet) 

shinyServer(function(input, output) { 
    output$map <- renderLeaflet({ 
     leaflet() %>% 
      addTiles(group = "OpenStreetMap") %>% 
      addMarkers(runif(20,-75,-74), 
        runif(20, 41, 42)) 
    }) 

    proxy <- leafletProxy("map") 

    proxy %>% addCircles(runif(20,-75,-74), 
        runif(20, 41, 42), 
        group = "Circles", 
        color = "red") %>% 
    addCircles(runif(20,-75,-74), 
       runif(20, 41, 42), 
       group = "Circles", 
       color = "blue") 

# now we can show or hide depending on UI 
    observe({ 
     if (input$Circles == TRUE) { 
      proxy %>% showGroup("Circles") 
     } else { 
      proxy %>% hideGroup("Circles") 
     } 
    }) 

}) 

我也放棄了使用這個傳說。我還沒有找到能夠充分控制添加到情節中的傳說數量的軟件,所以我將不得不以另一種方式描述顏色的使用,可能在文本中。