Leaflet's markercluster plugin提供chunkProgress
回调函数,提供有关数据点加载的信息,我想在Shiny's progress indicator中合并来自该函数的信息,显示有关加载数据点数的信息
应用代码借鉴了Leaflet for R和Shiny's页提供的官方示例。
library(shiny)
library(leaflet)
r_colors <- rgb(t(col2rgb(colors()) / 255))
names(r_colors) <- colors()
noMarkers <- 200
ui <- fluidPage(leafletOutput("mymap"),
p(),
actionButton("recalc", "New points"))
server <- function(input, output, session) {
points <- eventReactive(input$recalc, {
cbind(rnorm(noMarkers) * 2 + 13, rnorm(noMarkers) + 48)
}, ignoreNULL = FALSE)
output$mymap <- renderLeaflet({
withProgress(message = 'Making plot', value = 0, {
# How can I replace noMarkers with dynamic values
# passed from the callback function
incProgress(1 / noMarkers, detail = paste("Doing point", noMarkers))
leaflet() %>%
addProviderTiles(providers$Stamen.TonerLite,
options = providerTileOptions(noWrap = TRUE)) %>%
addMarkers(data = points(),
clusterOptions = markerClusterOptions())
})
})
}
shinyApp(ui, server)
根据marker cluster pages提供的信息:
chunkProgress
:在每个结尾处调用的回调函数 chunkInterval。通常用于实现进度指示器,例如, RealWorld 50k中的代码。默认为null
。参数:数量 已处理标记要添加的标记总数经过的时间(in MS)
chunkProgress
函数应该包含所有必要的信息。特别是进度条的结构将是:
incProgress(Number of processed markers / Total number of markers,
detail = paste("Doing point", Number of processed markers))
如何访问这些值并使其可用于incProgress
调用,并确保在地图绘制过程中重复调用incProgress
?
Leaflet提供定制的plugins,以便于显示进度加载指标。我仅对一个解决方案感兴趣,该解决方案将利用Shiny的“本机”机制来显示进度条,就像在实际地图中我还有其他功能更新进度条。