Отображение 'sync' (mapview) в блестящем
Я пытаюсь сделать два пространственных участка рядом друг с другом блестящими, и мне предложили мощную функцию, sync
из mapview
, После выяснения, как отобразить mapview
объект в shiny
Я пытался интегрировать sync
в 'глянцевый', но получил следующую ошибку: Ошибка в слоте (x, "map"): нет слота с именем "map" для этого объекта класса "lovely.tag.list". Значит ли это 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)
1 ответ
Мы обсудили создание возвращаемого значения из sync
HTML-виджет В настоящее время, 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
})
}
)