显示'同步' (mapview)闪亮

时间:2016-10-26 21:38:00

标签: r shiny leaflet r-mapview

我正在尝试two spatial plots side-by-side in shiny,我被提出了一个功能强大的sync mapview。在确定如何display mapview object in shiny之后,我尝试将sync整合到'闪亮的'中,但得到以下错误:插槽错误(x,"地图&# 34;):没有名称的插槽"地图"对于这个类的对象" shiny.tag.list" 的。这是否意味着sync没有地图对象,因此,无法将synclatticeViewshiny进行整合?如果是这样,我想应该有解决方案,我的耳朵都是开放的。这是一个很好的功能,可以从Shiny访问,并允许做一些有趣的事情。非常感谢任何建议。以下是可重现的示例代码:

library(shiny)
library(mapview)
ui <- fluidPage(
   mapviewOutput("samplemap"),
   p()
)
server <- function(input, output, session) {
   output$samplemap <- renderMapview({
      m1 <- mapview(gadmCHE,zcol="ID_1")
      m2 <- mapview(gadmCHE,zcol="OBJECTID")
      sync(m1,m2)
      })
}
shinyApp(ui, server)

1 个答案:

答案 0 :(得分:2)

我们已经讨论过从sync和htmlwidget创建返回值。目前,sync返回htmltools::tagList个传单地图。将tags插入shiny与插入mapview略有不同。我将尝试在下面的代码中解释。

library(mapview)

m1 <- mapview(gadmCHE,zcol="ID_1")
s1 <- sync(m1,m1)


library(shiny)

# if not dynamically adding maps
#   we can just insert as ui

shinyApp(
  ui = s1,
  server = function(input,output){}
)

# if there is a need to create the maps after UI
#   then we will need to handle differently
#   since sync gives us tags instead of an htmlwidget
shinyApp(
  ui = uiOutput("syncmap"),
  server = function(input,output){
    output$syncmap = renderUI({
      s1
    })
  }
)