我不喜欢R,而是尝试使用Shiny开发仪表板。
我正在添加一个数据表,它运行良好。单击记录时,我已经设法创建一个弹出窗口。弹出窗口显示一个传单地图,但是背景为灰色。我不知道为什么。
此外,当我单击包含经/纬度的行时,我想缩放到该位置。有可能吗?
我到目前为止的代码
library(shiny)
library(leaflet)
library(shinyBS)
##############################################################################
# UI Side
##############################################################################
ui <- fluidPage(
DT::dataTableOutput("mydatatable")
)
##############################################################################
# Server Side
##############################################################################
server <- (function(input, output, session) {
mycars = head(mtcars)
output$mydatatable = DT::renderDataTable(mycars, selection = 'single',
rownames = FALSE,
filter = 'top',
options = list(dom = 't'))
observeEvent(input$mydatatable_rows_selected,
{
showModal(modalDialog(
title = "You have selected a row!",
leaflet() %>%
addProviderTiles(providers$OpenStreetMap)
))
})
})
# Run the application
shinyApp(ui = ui, server = server)
答案 0 :(得分:1)
要显示地图,请将传单参数包装在renderLeaflet()
中。
要放大特定的纬度和经度,请使用setView()
,您还可以在其中添加缩放级别。在这里,我将其设置为巴黎:
observeEvent(input$mydatatable_rows_selected,
{
showModal(modalDialog(
title = "You have selected a row!",
renderLeaflet(leaflet() %>%
setView(lng = 2.349014, lat = 48.864716, zoom = 6) %>%
addProviderTiles(providers$OpenStreetMap))
))
})
编辑
我在这里创建了一个伪数据集,其中包含您感兴趣的数据-这是以后在询问是否需要某些功能时应做的事情。
请注意,添加了反应性数据集(filtered_data
),该数据集基本上将原始数据集(fake_data
)过滤到已单击的行号上。然后可以将其输入到Leaflet参数中。
server <- (function(input, output, session) {
fake_data = data.frame(name = c("Paris", "Sydney"),
longitude = c(2.349014, 151.209900),
latitude = c(48.864716, -33.865143))
filtered_data <- reactive({fake_data[input$mydatatable_rows_selected, ]})
output$mydatatable = DT::renderDataTable(fake_data,
selection = 'single',
rownames = FALSE,
filter = 'top',
options = list(dom = 't'))
observeEvent(input$mydatatable_rows_selected,
{
showModal(modalDialog(
title = "You have selected a row!",
renderLeaflet(leaflet() %>%
setView(lng = filtered_data()$longitude,
lat = filtered_data()$latitude,
zoom = 6) %>%
addProviderTiles(providers$OpenStreetMap))
))
})
})