在Shiny中使用leafletProxy更新时,在地图上显示加载微调框

时间:2018-08-09 19:11:25

标签: r shiny leaflet r-leaflet

“ shinycssloaders”软件包是作为一个简单的包装程序开发的,可以为UI输出提供加载图标,效果很好。不幸的是,它不适用于通过leafletProxy更新的地图(仅生成的初始地图将使用加载图标)。

是否有已知的解决方案?

2 个答案:

答案 0 :(得分:1)

这是我使用github.com/AnalytixWare/ShinySky/blob/master/R/busy-indicator.r

提供的功能的方式

在您的用户界面中:

 tagList(
    tags$head(
      tags$script(type="text/javascript", src = "busy.js")
    )
  ),
  div(class = "busy", p('your text'),img(src="loader.gif")
)

其中文件夹www包含loader.gif和busy.js,

setInterval(function(){
    if ($('html').attr('class')=='shiny-busy') {
        setTimeout(function() {
            if ($('html').attr('class')=='shiny-busy') {
                $('div.busy').show()
            }
        }, 1500)
    } else {
        $('div.busy').hide()
    }
}, 0)

loader.gif(以及提供的文本)将始终在闪亮忙碌时显示(功能中提供了延迟)。

答案 1 :(得分:0)

我正在尝试使这种方法起作用。我设法将gif显示在地图上方,但显示/隐藏无效。有趣的是,在渲染标记时,gif冻结了。我们该如何解决?

# before the loop:
clean_text = []  # empty list
# inside the loop:
clean_text.append(plain[plain.index(cipher[(ord(i)-ord('a'))])])
# later, after the loop, put:
''.join(clean_text)