使用simplevis添加多边形后R语言sf点要素弹窗无法访问的解决方案咨询
解决simplevis+leaflet添加多边形后点弹窗失效的问题
你遇到的问题核心是leaflet的图层渲染顺序:后添加的图层会覆盖在之前的图层上面。你之前先创建了点图层,再添加多边形,导致多边形完全盖住了点,自然点的弹窗就点不到了。另外,你需要只保留点的图例,这正好可以通过调整图层顺序+利用默认行为来实现。
这里给你调整后的代码,完美解决这两个需求:
library(sf) library(leaflet) library(simplevis) # 先添加底层的边界多边形,再叠加点图层 leaflet() %>% # 添加边界多边形,放在最底层 addPolygons( data = sf::st_transform(example_borders, 4326), color = "#35B779", weight = 3, fillOpacity = 0, opacity = 1 ) %>% # 把点图层叠加在多边形上面,保留弹窗和点的图例 leaf_sf_col( data = example_point, col_var = trend_category, popup = TRUE )
为什么这样有效?
- 图层顺序调整:leaflet会按照代码中添加图层的顺序渲染,先加的多边形在底层,后加的点在顶层,这样点击时能直接触发点的弹窗事件,不会被多边形挡住。
- 图例自动控制:
leaf_sf_col会自动生成点数据的图例,而addPolygons默认不会添加任何图例,刚好符合你只显示点图例的需求。
如果之后遇到多边形意外显示图例的情况,可以在addPolygons里加上group = "borders",再用hideGroup("borders")把它的图例隐藏掉,不过上面的代码默认不会出现这个问题。
内容的提问来源于stack exchange,提问作者Ed_Gravy
相关产品推荐
相关产品推荐

