Отображение '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
    })
  }
)
Другие вопросы по тегам