问题描述
我在尝试使用 Simple Features
和 Mapview
可视化多边形时遇到了一个问题。
我创建了两个矩形,a
和 b
,并将它们放在 Mapview
上的两层。我的问题是,如果我在 b
之前选择 a
,b
矩形将被 a
覆盖并且无法正确显示。
有什么办法可以让我始终将 a
保留在后台,以便在选择时始终显示 b
?
library(mapview)
library(sf)
a<-rbind(c(0,0),c(15,5),c(0,0))
a_polygon<-st_polygon(list(a))
b<-rbind(c(5,1),c(10,4),c(5,1))
b_polygon<-st_polygon(list(b))
mapview(list(st_sfc(a_polygon),st_sfc(b_polygon)),col.regions = list('blue','yellow'),layer.name =c('a','b'))
解决方法
您可以直接使用 mapview
,而不是使用 API
(它是 leaflet
的 leaflet
)。leaflet
允许添加 Panes
to control layers order:
leaflet() %>% addMapPane("background",zIndex = 400) %>%
addMapPane("foreground",zIndex = 500) %>%
addPolygons(data = a_polygon,group="a",color ='blue',fillOpacity= 1,options = pathOptions(pane = "background")) %>%
addPolygons(data = b_polygon,group="b",color='yellow',fillOpacity = 1,options = pathOptions(pane = "foreground")) %>%
addLayersControl(overlayGroups = c("a","b"),options = layersControlOptions(collapsed = FALSE))
,
您可以使用 alpha.regions
参数来允许图层有点透明。
mapview(a_polygon,col.regions = 'blue',alpha.regions = .6) +
mapview(b_polygon,col.regions = 'yellow',alpha.regions = .6)
alpha.regions
可以设置为从 0(不可见)到 1(不透明)。这是先选择 'b',然后选择 'a' 和 alpha 为 0.6 时的样子: