Листовка с панорамированием карты или сюжет Plotly в перетаскиваемой панели Shiny также перемещает панель - PullRequest
2 голосов
/ 10 июня 2019

При использовании карты листовок внутри перетаскиваемой панели Shiny (например, absolutePanel с draggable = T), панорамирование карты листовок с помощью мыши также перетаскивает панель Shiny.

Есть ли способ запретить панорамированию карты с помощью мыши также перемещать панель Shiny?

Я думаю, что это похоже на эту решенную проблему: https://github.com/rstudio/shiny/issues/711

и в листовке есть функции событий DOM, связанные с распространением кликов.

Edit:

Это также происходит с графиками Plotly и может быть более общей проблемой, чем я изначально предполагал. Вопрос был отредактирован для включения сюжета.

Пример листовки:

library(leaflet)
library(shiny)

shinyApp(
  ui = fluidPage(
    absolutePanel(draggable=T, width='600px', wellPanel(
        fluidRow(leafletOutput('map'))
    ))
  ),
  server = function(input, output, session) {
    output$map=renderLeaflet({
      leaflet() %>%
      addProviderTiles(providers$OpenStreetMap)
    }) 
  }
)

Установка опции перетаскивания на F в буклете решает проблему, но делает карту менее полезной.

shinyApp(
  ui = fluidPage(
    absolutePanel(draggable=T, width='600px', wellPanel(
        fluidRow(leafletOutput('map'))
    ))
  ),
  server = function(input, output, session) {
    output$map=renderLeaflet({
      leaflet(options=leafletOptions(dragging=F)) %>%
      addProviderTiles(providers$OpenStreetMap)
    }) 
  }
)

Пример Plotly

Масштабирование, панорамирование и выбор сюжета - все это приводит к перемещению перетаскиваемой панели.

library(plotly)
library(shiny)

shinyApp(
  ui = fluidPage(
    absolutePanel(draggable=T, width='600px', wellPanel(
        fluidRow(plotlyOutput('plot'))
    ))
  ),
  server = function(input, output, session) {
    output$plot=renderPlotly({
      plot_ly(data=mtcars, type='scatter', mode='markers', x=~hp, y=~mpg, name=~cyl)
    })
  }
)
...