блестящая приборная панель с листовкой: невозможно заставить работать счетчик уровня на стороне сервера - PullRequest
0 голосов
/ 31 августа 2018

Я пытаюсь создать блестящую приборную панель, которая циклически понижает уровни полигонов в листовке. При щелчке по многоугольнику он добавляет 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 Ответ

0 голосов
/ 04 сентября 2018

Обновление значения, определенного вне функции наблюдения, не может быть обновлено внутри функции наблюдения, если только вы не используете двойные стрелки (<< -) для назначения в области видимости глобальной среды. </p>

Это означает, что если вам нужен какой-то счетчик, который обновляется каждый раз, когда на панели мониторинга вызывается функция наблюдения, сделайте это следующим образом:

счетчик <- 1 </p>

Наблюдать ({click = input $ map_shape_click

counter << - counter + 1 }) </p>

...