使用Shiny的进度条和传单集群插件

时间:2017-04-06 06:59:07

标签: r shiny leaflet leaflet.markercluster

Leaflet's markercluster plugin提供chunkProgress回调函数,提供有关数据点加载的信息,我想在Shiny's progress indicator中合并来自该函数的信息,显示有关加载数据点数的信息

示例应用

应用代码借鉴了Leaflet for RShiny'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的“本机”机制来显示进度条,就像在实际地图中我还有其他功能更新进度条。

0 个答案:

没有答案