如何成功将传单地图保存为.png图像?

问题描述 投票:0回答:1

在地理坐标之外,我想在城市地图上绘制简单的平原点并将输出保存为.png。我使用的是 Linux Ubuntu 22.04LTS。对于第一部分,我找到了一个非常简短且直接的

leaflet
解决方案。

library(leaflet); library(htmlwidgets); library(webshot)

m <- leaflet() %>% 
  addTiles("https://{s}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}.png") %>%
  setView(-.12, 51.50, zoom=13)
m$x$options <- append(m$x$options, list("zoomControl" = FALSE))
m <- m %>%
  addCircleMarkers(c(-.11, -.12, -.13), c(51.48, 51.52, 51.50),
                   radius=1, color="red")
m

enter image description here

但是,第二部分,保存 .png 失败。我尝试过这个解决方案

saveWidget(m, "temp.html", selfcontained=TRUE)
webshot("temp.html", file="Rplot.png", cliprect="viewport")

但是 - 使用

phantomjs 2.1.1
- 它给了我这些错误:

Auto configuration failed
139740646049728:error:25066067:DSO support routines:DLFCN_LOAD:could not load the shared library:dso_dlfcn.c:185:filename(libproviders.so): libproviders.so: cannot open shared object file: No such file or directory
139740646049728:error:25070067:DSO support routines:DSO_load:could not load the shared library:dso_lib.c:244:
139740646049728:error:0E07506E:configuration file routines:MODULE_LOAD_DSO:error loading dso:conf_mod.c:285:module=providers, path=providers
139740646049728:error:0E076071:configuration file routines:MODULE_RUN:unknown module name:conf_mod.c:222:module=providers
Error in webshot("temp.html", file = "Rplot.png", cliprect = "viewport") : 
  webshot.js returned failure value: 1
In addition: Warning message:
In is.null(x) || is.na(x) : 'length(x) = 4 > 1' in coercion to 'logical(1)'

使用稍旧的版本

phantomjs 1.9.8
不会出现错误,但图像完全空白。我使用这些源在 Ubuntu 上安装
phantomjs
1.9.82.1.1。我研究了这个answer,根据它你必须安装开发版本,但我没有发现它有用,因为我不知道
phantomjs
的开发版本。

我不一定需要互动

leaflet
,但我觉得黑暗主题看起来很酷,并且符合夜间犯罪的研究主题。因此,如果静态解决方案看起来相似(如果它不使用 Google),我对静态解决方案持开放态度。

r linux maps png r-leaflet
1个回答
5
投票

使用新包 webshot2,它使用 Chrome 或 Chromium 无头浏览器而不是 phantomjs

© www.soinside.com 2019 - 2024. All rights reserved.