无法使用 savewidget/webshot 在传单中对 Openstreetmap 进行快照

Posted

技术标签:

【中文标题】无法使用 savewidget/webshot 在传单中对 Openstreetmap 进行快照【英文标题】:Cannot snapshot Openstreetmap in leaflet using savewidget/webshot 【发布时间】:2017-10-31 09:26:16 【问题描述】:

我需要使用传单中的 openstreet 地图制作用户定义地图的快照。我正在使用 saveWidget 保存一个 html 文件,然后使用 webshot 来拍摄该文件。它与 Esri.WorldStreetMap 等完美配合。但是,我无法使其与 Openstreetmap 一起使用。下面是一个最小的例子:

library(shiny)
library(leaflet)
library(webshot)
library(htmlwidgets)

ui <- fluidPage(
  actionButton("button", "An action button")
)

server <- function(input, output, session) 
  observeEvent(input$button,
               
                 themap<-leaflet() %>%
                   addProviderTiles("Openstreetmap.Mapnik")%>%
                   setView(lng=174.768, lat=-36.852,zoom=14)%>% 
                   addMarkers(lng=174.768, lat=-36.852, popup="The birthplace of R")
                 saveWidget(themap, 'temp.html', selfcontained = T)    
                 webshot('temp.html', file = "map.png",cliprect = viewport")
               )



shinyApp(ui, server)

【问题讨论】:

【参考方案1】:

稍作修改,您的代码就可以在我的 R 3.4.2 上运行:

ui <- fluidPage(
  actionButton("button", "An action button")
)
server <- function(input, output, session) 
  observeEvent(input$button,
               
                 themap <- leaflet() %>%
                   addProviderTiles("OpenStreetMap.Mapnik") %>%
                   setView(lng=174.768, lat=-36.852,zoom=14) %>% 
                   addMarkers(lng=174.768, lat=-36.852, popup="The birthplace of R")
                 saveWidget(themap, 'temp.html', selfcontained = T)    
                 webshot('temp.html', file = "map.png",cliprect = "viewport")
               )


shinyApp(ui, server)

这是我得到的:

【讨论】:

问题在 R 3.4.2 下仍然存在(我之前使用的是 3.4.1.)。我在本地版本以及 Rstudio 服务器和闪亮服务器上遇到了同样的问题。我没有看到您提到的代码的细微修改。 谢谢。发帖时拼写错误。不幸的是我仍然遇到这个问题。 R 版本 3.4.2 (2017-09-28) 平台:x86_64-w64-mingw32/x64 (64-bit) 运行条件:Windows 7 x64 (build 7601) Service Pack 1 Matrix 产品:默认语言环境:[1] LC_COLLATE=Danish_Denmark.1252 LC_CTYPE=Danish_Denmark.1252 LC_MONETARY=Danish_Denmark.1252 LC_NUMERIC=C [5] LC_TIME=Danish_Denmark.1252 .... 附加的基础包:[1] stats graphics grDevices utils datasets 方法基于其他附加包:[1] htmlwidgets_0.9 webshot_0.4.2 leaflet_1.1.0 shiny_1.0.5 通过命名空间加载(未附加) :[1] Rcpp_0.12.13 digest_0.6.12 mime_0.5 R6_2.2.2 xtable_1.8-2 jsonlite_1.5 magrittr_1.5 tools_3.4.2 [9] crosstalk_1.0.0 httpuv_1.3.5 yaml_2.1.14 rsconnect_0.8.5 compiler_3.4.2 htmltools_0。 3.6 1.上面修改后的代码对我有用。 2. 你的代码中有两个拼写错误:Openstreetmap -> OpenStreetmap, viewport" - "viewport"。你怎么会有拼写错误?那个代码是如何为你自己工作的?3.为什么你需要例如闪亮的部分?它没有意义。部分里面的脚本可以独立运行。

以上是关于无法使用 savewidget/webshot 在传单中对 Openstreetmap 进行快照的主要内容,如果未能解决你的问题,请参考以下文章

请帮助我无法构建相同的这个小部件,我无法使用颤振代码在列表视图中构建容器

无法使用 react-testing-library 运行测试“无法在模块外使用 import 语句”错误

无法安装“GSImageViewerController Pod”并且无法在项目中快速使用其代码

无法修复错误:此配置部分无法在此路径中使用

maxdos7..1在无法开机的情况下如何使用

无法使用 eloquent 运行工匠并且无法在我的表中创建新记录