带有传单的闪亮仪表板:无法使服务器端级别计数器工作



我正在尝试构建一个闪亮的仪表板,该仪表板可以在传单中循环降低多边形级别。 单击多边形时,它会将 1 添加到"级别"指示器,并在单击的多边形下方显示多边形图层。当它到达底层时,它还会显示该多边形内的标记并循环回顶层。

但是,我无法使"水平"指示器起作用。它通过第一关和最后一关不断重置为零循环。

如果有人能帮助我解决这个问题,将不胜感激!

这是我下面的代码:

server <- function(input, output) {
level<- 0
# plot all polygons of the first level, which is 0
output$map <- renderLeaflet({
leaflet(data = wijk_sf) %>%
#setView(lng = 4.473719, lat = 51.88956, zoom = 11) %>%
addProviderTiles("Stamen.Terrain") %>%
addPolygons(color = "black",
fillColor = "darkgreen",
fillOpacity = 0.7,
label = ~GEBDNAAM,
layerId = ~GEBDNAAM
) 
})
observe(
{click = input$map_shape_click
p <- input$map_shape_click
if(is.null(click)){
return()
}else if((p$id %in% wijk_vec) & level == 0){ 

level<- 1
# plot polygon level 0 here and set level to 1

}else if((p$id %in% buurt_vec) & level == 1){
level <- 2
#  if level == 1, plot polygon level 1 here and set level to 2
}else if((p$id %in% buurt_vec) & level == 2){
level<- 0

# if level == 2, plot polygon level 2 here and set level to 0
}else{
level <- 0
# if all else fails, set level to 0 and plot the standard level 0 map
leafletProxy('map') %>%
clearShapes() %>%
clearMarkers() %>%
setView(lng = 4.473719, lat = 51.88956, zoom = 11) %>%
addPolygons(data = df[,level])
}
)
}

更新在观察函数外部定义的值无法在观察函数内更新,除非您使用双箭头 (<<-( 赋值到全局环境的作用域中。

这意味着,如果您需要某种计数器,每次在仪表板中调用观察函数时都会更新,请按照以下步骤操作:

计数器<- 1

观察({点击 = 输入$map_shape_click

计数器 <<- 计数器 + 1 })

最新更新