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

Shiny 带传单的闪亮仪表板:无法使服务器端级别计数器工作,shiny,leaflet,dashboard,Shiny,Leaflet,Dashboard,我试图建立一个闪亮的仪表板,循环下来的传单多边形水平。 单击多边形时,它会向“级别”指示器添加1,并显示单击多边形下方的多边形层。当它到达底层时,它还会显示多边形内部的标记,并循环回到顶层 然而,我无法让“级别”指标发挥作用。它通过第一级和最后一级循环不断重置为零 如果有人能帮我解决这个问题,我将不胜感激 下面是我的代码: server <- function(input, output) { level<- 0 # plot all polygons of the first

我试图建立一个闪亮的仪表板,循环下来的传单多边形水平。 单击多边形时,它会向“级别”指示器添加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])

    }
  )

}
server%
添加多边形(color=“黑色”,
fillColor=“暗绿色”,
fillOpacity=0.7,
label=~GEBDNAAM,
layerId=~GEBDNAAM
) 
})
观察(
{click=input$map\u shape\u click

p除非使用双箭头,否则更新在观察函数外部定义的值不能在观察函数内部更新(这里有很多事情,你能不能编辑成一个,这样其他人就可以更好地理解这个问题?因为传单地图不是这里的重点,我删除了这些,并给出了一个小的描述。很难找到示例多边形,我无法共享我拥有的多边形。问题是:代码应该循环使用各种if-else()语句,每次单击都会显示当前级别多边形下方的多边形。当到达底部时,应将其重置为顶部。但是,“level”变量一直重置为0,因此代码在第一个级别和最后一个级别之间循环。我无法使level变量正常工作。我解决了我自己的问题/问题level变量不会在observe函数之外得到更新。双箭头通过将其分配给全局环境解决了此问题。太好了!您应该将其作为答案写出来,以便其他人在遇到此问题时可以找到它。