0

这个问题是这个问题的延续(点击 bar 时更新 Deckgl map in R shiny)。

当用户单击一个栏时,我会进入详细信息视图,这很好,但我还想在详细信息视图中更新缩放级别。这个怎么做 ?

我试图在“on_click”图层中设置缩放参数,但它似乎不起作用。

rm( list = ls() )

library( shiny ) ; library( shinydashboard ) ; library( dplyr ) ; library( deckgl )

ui <- basicPage( deckglOutput( 'map', height = '800px' ) )

server <- function(input, output) {
  
  aggregate_df = data.frame( 'area' = LETTERS[1:2], 'count' = 110:111, median_lon = c( 3.39, 3.41 ),
                             
                             median_lat = c( 49.7, 49.4 ), color = c("#0080FF", "#FF0080") )
  
  orig_df = data.frame( 'area' = rep( c( 'A', 'B' ), c( 3, 2 ) ), count = 10:14, lon = c( 3.45, 3.39, 3.19, 3.41, 3.92 ),
                        
                        lat = c( 48, 49.7, 52, 49.4, 51.5 ), color = c("#0080FF", "#FF0080", "#FF3030", "#00EE00", '#FF7F24') )                    
  
  
  output$map = renderDeckgl({
    
    deckgl( zoom = 7, pitch = 35, latitude = 48.29507, longitude = 4.0731520 ) %>%
      
      add_column_layer(
        data = aggregate_df,
        getPosition = ~median_lon + median_lat,
        getElevation = ~count,
        getFillColor = ~color,
        getTooltip = "Area: {{area}}, Count: {{count}}",
        elevationScale = 100
      ) %>% add_basemap()
    
  })
  
  
  observeEvent(input$map_onclick, {
    deckgl_proxy( 'map' ) %>%
      
      add_column_layer(
        data = orig_df %>% filter( area == input$map_onclick$object[["area"]] ),
        getPosition = ~lon + lat,
        getElevation = ~count,
        getFillColor = ~color,
        getTooltip = "Area: {{area}}, Count: {{count}}",
        elevationScale = 1000,
        zoom = 5,
      ) %>% update_deckgl(it = "works")
  })
  
}

shinyApp(ui, server)
4

1 回答 1

0

我发现现在deckgl包中没有这个功能。但是,在 github 中请求功能请求时,它已经实现。这是实施的链接:解决方案链接

于 2020-07-04T20:59:06.527 回答