Shiny 带传单的闪亮仪表板:无法使服务器端级别计数器工作
我试图建立一个闪亮的仪表板,循环下来的传单多边形水平。 单击多边形时,它会向“级别”指示器添加1,并显示单击多边形下方的多边形层。当它到达底层时,它还会显示多边形内部的标记,并循环回到顶层 然而,我无法让“级别”指标发挥作用。它通过第一级和最后一级循环不断重置为零 如果有人能帮我解决这个问题,我将不胜感激 下面是我的代码:Shiny 带传单的闪亮仪表板:无法使服务器端级别计数器工作,shiny,leaflet,dashboard,Shiny,Leaflet,Dashboard,我试图建立一个闪亮的仪表板,循环下来的传单多边形水平。 单击多边形时,它会向“级别”指示器添加1,并显示单击多边形下方的多边形层。当它到达底层时,它还会显示多边形内部的标记,并循环回到顶层 然而,我无法让“级别”指标发挥作用。它通过第一级和最后一级循环不断重置为零 如果有人能帮我解决这个问题,我将不胜感激 下面是我的代码: server <- function(input, output) { level<- 0 # plot all polygons of the first
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函数之外得到更新。双箭头通过将其分配给全局环境解决了此问题。太好了!您应该将其作为答案写出来,以便其他人在遇到此问题时可以找到它。