我正在尝试更好地控制leaflet
弹出窗口在R
, 使用leaflet
包裹。 MWE 的代码如下:
library(dplyr)
library(magrittr)
library(leaflet)
download.file(
url = "http://biogeo.ucdavis.edu/data/gadm2.8/rds/GBR_adm1.rds",
destfile = "GBR_adm1.rds",
method = "curl"
)
shp_gbr <- readRDS("GBR_adm1.rds")
# get centroids for placing popups in second map
shp_gbr_centers <-
rgeos::gCentroid(shp_gbr, byid = TRUE) %>%
sp::SpatialPointsDataFrame(shp_gbr@data, match.ID = FALSE)
shp_gbr@data %<>%
left_join(shp_gbr_centers[1], by = 'OBJECTID', copy = TRUE) %>%
rename(lat = y, lng = x) %>%
select(NAME_1, lat, lng) %>%
mutate(text = ProgGUIinR::LoremIpsum)
popup <- paste("<b><h3>", shp_gbr$NAME_1, "</h3></b>", shp_gbr$text)
shp_gbr %>%
leaflet() %>%
addPolygons(popup = ~popup)
这提供了一个漂亮的地图,其中在 4 个国家/地区的区域内单击时会出现弹出窗口,但在这种情况下,文本太多,弹出窗口无法很好地处理:
我想要的是访问一些popupOptions
可以通过addPopups
函数,在本例中是使弹出窗口更宽并具有滚动条。下面是一个例子:
shp_gbr %>%
leaflet() %>%
addPolygons() %>%
addPopups(
data = shp_gbr@data,
popup = ~popup,
options =
popupOptions(
maxWidth = 600,
maxHeight = 100
)
)
但是,弹出窗口现在设置为在启动时打开,而不是在边界内单击时显示,并且关闭后单击时不会重新打开:
我的问题是如何组合这些元素,以便您可以在地图中使用滚动条来显示太多文本,例如第一个示例,其中弹出窗口默认关闭,但单击时打开。