如何在flexdashboard中的传单地图中调整弹出图像的大小?

时间:2019-07-10 01:52:50

标签: r leaflet r-mapview

R闪亮还有一个类似的问题:Control the size of popupImage from leaflet in r shiny

但是我正在使用 flexdashboard 。我没有CSS的背景。如何调整尺寸?下面的示例代码:

library(leaflet)
library(mapview)
leaflet() %>%
  addProviderTiles(providers$Esri.WorldStreetMap) %>% 
  addRectangles(
    lng1 = bbox_north2$p1$long, lat1 = bbox_north2$p1$lat,
    lng2 = bbox_north2$p2$long, lat2 = bbox_north2$p2$lat,
    fillColor = "red", stroke = FALSE,
    popup = popupImage(here::here("products", "north1.png"), width = 800, height = 600, embed = TRUE)

设置width = 800时,弹出窗口显示较大,但其中一部分显示为灰色。

1 个答案:

答案 0 :(得分:1)

免责声明:此处为mapview开发人员。

首先,请注意,mapview中的popup*()函数已移至名为 leafpop 的轻量级程序包。尽管在CRAN上,但针对此问题,我们需要来自github的开发版本,可以在here中找到。 -在下面的示例中取消对remotes::install_githib()调用的注释,以获取最新版本。

mapview弹出功能存在很多问题,这些问题导致我重写了大多数功能(包括popupImage())。重写引入了新的API设计,这是必需的,因为我们需要访问map对象。因此,对于您眼前的问题,以下应该可以解决您的问题:

# remotes::install_github("r-spatial/leafpop")
library(leaflet)
library(leafpop)

img = "/path/to/some/image.png"

# does not work properly - image is clipped in y
leaflet() %>%
  addTiles() %>%
  addPolygons(data = franconia[1, ], popup = popupImage(img, width = 400))

# works
leaflet() %>%
  addTiles() %>%
  addPolygons(data = franconia[1, ], group = "fran") %>%
  addPopupImages(image = img, group = "fran", width = 400)

基本上,您首先使用各自的leaflet::add*()函数创建(数据)层(在addPolygons()以上的示例中),然后使用addPopupImges()标识该层将图像注册为弹出窗口group参数。这应该可以让您设置所需的宽度和高度(尽管我认为maxwidth值为2000像素)。