我正在尝试在shiny中并排放置两个空间情节,并且我建议使用强大的功能,mapview
中的sync
。在确定如何在shiny
中显示mapview
对象后,我试图将sync
集成在"shiny"中,但得到以下错误:槽位(x,"map")错误:该类"shiny.tag"对象没有名称为"map"的槽位。名单"。这是否意味着sync
没有映射对象,因此,不可能将sync
或latticeView
与shiny
集成?如果是这样,我想应该有变通的解决方案,我的耳朵都是开放的。这是一个很好的功能,可以从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)
我们已经讨论了从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
})
}
)