导出带有固定缩放和边界框的传单地图,无需填充

Eck*_*ard 5 export r zooming leaflet

我知道我可以使用mapview::mapshot从 Rstudio 导出传单地图作为 PNG。但是,我无法精确指定要导出的地图的缩放级别和区域。

这个相关问题的答案中借用一些代码让我们考虑以下 MWE。

library(maps)
library(ggmap)
library(maptools)
library(leaflet)
library(mapview)
library(rgdal)

country   <- 'italy';
zoomLevel <- 12;

ita.map <- map( country, fill = TRUE, col = 1, plot = F );
ita.map.ids <- sapply( strsplit( ita.map$names, ':' ), function(x) x[1] );
ita.sp <- map2SpatialPolygons( ita.map, IDs=ita.map.ids, proj4string=CRS("+proj=longlat +datum=WGS84"))

bb<-as.numeric(ita.sp@bbox)

m<-leaflet() %>%
setView(12.48,41.89,zoom=zoomLevel) %>%
  addTiles() %>%
  addPolygons(data=ita.sp)%>%
  addExtent(data=ita.sp)


mapshot(m, file = "italy.png")
Run Code Online (Sandbox Code Playgroud)

结果是 在此处输入图片说明 这是正确的缩放级别,但显然不包含整个意大利。

添加

      %>% fitBounds(bb[1],bb[2],bb[3],bb[4])
Run Code Online (Sandbox Code Playgroud)

上面的代码产生 在此处输入图片说明 哪个更好,但是 a) 不遵守指定的缩放级别,并且 b) 有很多不需要的水平填充。

我认为向leaflet()调用添加宽度和高度参数会有所帮助,但我不确定如何自动获取正确的值。此外,生成的图像将非常大,需要降低分辨率。

如何在没有额外填充的情况下以指定的缩放级别导出包含意大利的地图区域?

use*_*590 6

我不知道你想要的是否可能(缩放 = 12 和整个意大利)...这两件事对我来说似乎是相互排斥的...除非你有一个巨大的数字...正如你所建议的。

我不确定,但也许您的填充问题的答案在 webshot 的 vwidth 选项中。我想你的身材需要比宽高,所以 vwidth < vheight...

mapshot(m, file = "italy.png", vwidth = 700, vheight = 744)
Run Code Online (Sandbox Code Playgroud)