R 使用UI打开和关闭数据和传单显示

R 使用UI打开和关闭数据和传单显示,r,shiny,leaflet,R,Shiny,Leaflet,我已经在ui.R和server.R文件中设置了这个问题的示例。这是ui.R文件。有三个随机数据集。无论用户界面做了什么,都将显示带有标记的。其他两个数据集应仅在被请求为“圆”时绘制 映射由server.R生成,如下所示。这将生成随机数据以及纬度和经度位置 library(shiny) library(leaflet) library(ggplot2) shinyServer(function(input, output) { output$map <- renderLeaflet

我已经在ui.R和server.R文件中设置了这个问题的示例。这是ui.R文件。有三个随机数据集。无论用户界面做了什么,都将显示带有标记的。其他两个数据集应仅在被请求为“圆”时绘制

映射由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")
      }
    })
})
库(闪亮)
图书馆(单张)
图书馆(GG2)
shinyServer(功能(输入、输出){
输出$map%
addTiles(group=“OpenStreetMap”)%%>%
添加标记(runif(20,-75,-74),
runif(20、41、42))
})
观察({
代理%addCircles(runif(20,-75,-74),
runif(20,41,42),
group=“圆圈”,
color=“red”)%%>%
添加圆(runif(20,-75,-74),
runif(20,41,42),
group=“圆圈”,
color=“blue”)%%>%
addLegend(
position=“bottomright”,
颜色=c(“红色”、“蓝色”),
标签=c(“第1组”、“第2组”)
)
#无法在图例上放置组或标签。
}否则{
代理%>%hideGroup(“圆”)
#%%>%hideGroup(“第2组”)
}
})
})
当程序启动时,显示圆圈处于启用状态(TRUE)。我在这里看到两个主要问题。首先,可以关闭圆圈,但这是任何UI控件的结束。问题是它们无法再次打开。如果我尝试将checkboxInput启动为FALSE,UI控件将不会将其打开。我不知道这是标准,还是我做错了什么


第二个主要问题是,我无法编程将图例与圆圈一起关闭。使用hideGroup()函数关闭这些圆。这将被拒绝用于图例。我已经使用了我尝试过的命令,并将其转换为注释行。继续并删除#符号,以便您可以看到它造成的错误。我还没有找到替代方案。

我要感谢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")
        }
    })

})
库(闪亮)
图书馆(单张)
shinyServer(功能(输入、输出){
输出$map%
addTiles(group=“OpenStreetMap”)%%>%
添加标记(runif(20,-75,-74),
runif(20、41、42))
})
代理%addCircles(runif(20,-75,-74),
runif(20,41,42),
group=“圆圈”,
color=“red”)%%>%
添加圆(runif(20,-75,-74),
runif(20,41,42),
group=“圆圈”,
color=“蓝色”)
#现在我们可以根据用户界面显示或隐藏
观察({
如果(输入$Circles==TRUE){
代理%>%showGroup(“圆圈”)
}否则{
代理%>%hideGroup(“圆”)
}
})
})

我也放弃了使用传说。我还没有找到能够充分控制添加到绘图中的图例数量的软件,因此我将不得不以另一种方式描述颜色的使用,可能是在文本中。

hideGroup
相反的是
showGroup
。一旦你隐藏了它们,如果你想看到它们,你需要再次“显示”它们。这些圆的最初创建是使用命令“addCircles()”。我会用showGroup替换这些吗,或者它与addCircles以某种方式结合在一起?您可能需要
addCircles()
到原始的
传单()
调用。然后,
代理
事件根据
输入$Circles
条件显示或隐藏,我将尝试。有没有办法隐藏这个传说?
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")
        }
    })

})