如果用户勾选了一个复选框,我正在尝试在交互式传单地图上添加标记。但是,我无法在renderLeaflet函数中使用复选框外观,但是可以在renderPlot函数中使用
。有效的我的代码如下:
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
checkboxInput('check1','Show Counties', value = TRUE)),
mainPanel(
# I'm aware that this should be changed to leaftletOutput, when used
# with the in the second code snippet below
plotOutput("mymap")
),
position = 'right'
)
)
server <- function(input, output) {
output$mymap <- renderPlot({
if (input$check1){
hist(rnorm(10))
} else {
hist(rnorm(100))
}
})
}
shinyApp(ui = ui, server = server)
相同的逻辑在Leaflet中不起作用,我非常感谢您提供有关如何修改以下代码的信息。我知道您无权访问 USstates 或 coor 这两个变量,但是我希望有人可以指出错误,可能是语法错误。输出函数如下所示;
output$mymap <- renderLeaflet({
if (input$check1 == TRUE){
leaflet(USstates) %>%
addTiles() %>%
addPolygons(color = 'navy',
opacity = 1.0,
weight = 1) %>%
addMarkers(lng = coor[,1],lat = coor[,2])
} else {
leaflet(USstates) %>%
addTiles() %>%
addPolygons(color = 'navy',
opacity = 1.0,
weight = 1)
}
})
答案 0 :(得分:0)
创建此帖子后,我立即提出了一个原因解决方案。解决方案是将传单代码包装在一个反应函数中,然后在renderLeaflet函数中调用该代码。解决方法如下:
server <- function(input, output) {
display <- reactive({
if (input$check1){
leaflet(USstates) %>%
addTiles() %>%
addPolygons(color = 'navy',
opacity = 1.0,
weight = 1) %>%
addMarkers(lng = coor[,1],lat = coor[,2])
} else {
leaflet(USstates) %>%
addTiles() %>%
addPolygons(color = 'navy',
opacity = 1.0,
weight = 1)
}
})
output$mymap <- renderLeaflet({
display()
})
}