Leaflet 的 markercluster 插件提供chunkProgress
回调函数,提供有关加载数据点的信息,我想将该函数的信息合并到Shiny 的进度指示器中,以显示有关加载的数据点数量的信息。
示例应用
该应用程序代码借鉴了Leaflet for R和Shiny页面提供的官方示例。
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)
问题
根据可通过标记集群页面获得的信息:
chunkProgress
:在每个 chunkInterval 结束时调用的回调函数。通常用于实现进度指示器,例如 RealWorld 50k 中的代码。默认为null
. 参数: 已处理标记的数量 添加的标记总数 已用时间(以毫秒为单位)
该chunkProgress
功能应具有所有必要的信息。特别是进度条的结构将被调用为:
incProgress(Number of processed markers / Total number of markers,
detail = paste("Doing point", Number of processed markers))
如何访问这些值并使它们可用于incProgress
调用并确保incProgress
在地图绘制期间重复调用?
旁注
Leaflet 提供定制插件,方便显示进度加载指示器。我只对使用 Shiny 的“原生”机制来显示进度条的解决方案感兴趣,就像在实际地图中一样,我还有其他更新进度条的功能。