我正在尝试使用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
)
)
但是,弹出窗口现在设置为在启动时打开,而不是在边界内单击时出现,并且一旦关闭就不会重新打开:
我的问题是如何组合这些元素,以便你可以在地图中输入太多文本的滚动条,例如第一个示例,弹出窗口默认关闭,但在点击时打开。
答案 0 :(得分:1)
您可以使用此功能创建弹出窗口:
popup <- paste("<div class='leaflet-popup-scrolled' style='max-width:600px;max-height:100px'><b><h3>", shp_gbr$NAME_1, "</h3></b>", shp_gbr$text,"</div>")
它将弹出窗口包含在div
的{{1}}类中,以添加滚动条和内嵌CSS来设置leaflet-popup-scrolled
和max-width
。