首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >leafletProxy不在shinyDashboard工作

leafletProxy不在shinyDashboard工作
EN

Stack Overflow用户
提问于 2021-11-24 01:26:01
回答 1查看 151关注 0票数 2

leafletProxy在shinyDashboard中似乎不起作用。请参阅下面的工作示例,其中选择不同的字母应更改圆圈颜色。任何有洞察力的人都很感激。在这里创建的Github问题:https://github.com/rstudio/shinydashboard/issues/377

代码语言:javascript
复制
library(shiny)
library(shinydashboard)
library(leaflet)
library(sf)

n = 100

df1 = data.frame(id = 1:n,
                 x = rnorm(n, 10, 3),
                 y = rnorm(n, 49, 1.8))

pts = st_as_sf(df1, coords = c("x", "y"), crs = 4326)

map <- leaflet() %>%
  addProviderTiles(provider = providers$CartoDB.DarkMatter) %>%
  addCircles(data = pts, group = "pts") %>%
  setView(lng = 10.5, lat = 49.5, zoom = 6)

ui <- dashboardPage(
  dashboardHeader(),
  
  dashboardSidebar(
    selectInput(inputId = 'click', 'Choose one:', c('A', 'B', 'C'))
  ),
  
  dashboardBody(
    fluidRow(
      div(
        id = "map",
        column(
          width = 12,
          leafletOutput('map', height = '800px')),
      )
    )
  )
)


server <- function(input, output) {
  output$map <- renderLeaflet({map})
  
  observeEvent(input$click, {
    col <- switch(input$click, 
                  'A' = 'green', 
                  'B' = 'yellow', 
                  'C' = 'white')
    
    m <- leafletProxy("map") %>%
      clearShapes() %>%
      addCircles(data = pts,
                 color = col)
    
    m
  })
  
}

shinyApp(ui, server)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-24 08:52:09

关于您的代码有两个问题:

  1. leafletProxy需要一个会话参数(将它添加到服务器功能中)

  1. 你把你的传单地图放在一个与你的地图相同的iddiv中。-Id必须是唯一的。

代码语言:javascript
复制
library(shiny)
library(shinydashboard)
library(leaflet)
library(sf)

n = 100

df1 = data.frame(id = 1:n,
                 x = rnorm(n, 10, 3),
                 y = rnorm(n, 49, 1.8))

pts = st_as_sf(df1, coords = c("x", "y"), crs = 4326)

map <- leaflet() %>%
  addProviderTiles(provider = providers$CartoDB.DarkMatter) %>%
  addCircles(data = pts, group = "pts") %>%
  setView(lng = 10.5, lat = 49.5, zoom = 6)

ui <- dashboardPage(dashboardHeader(),
                    dashboardSidebar(selectInput(
                      inputId = 'color', 'Choose one:', list(A = 'green',
                                                             B = 'yellow',
                                                             C = 'white')
                    )),
                    dashboardBody(fluidRow(column(
                      width = 12,
                      leafletOutput('map', height = '800px')
                    ))))


server <- function(input, output, session) {
  output$map <- renderLeaflet({
    map
  })
  
  m <- leafletProxy("map", session)
  
  observeEvent(input$color, {
    m %>% clearShapes() %>%
      addCircles(data = pts,
                 color = input$color)
  }, ignoreInit = TRUE)
}

shinyApp(ui, server)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70089752

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档