如何为mapview地图添加区域/多边形标签?
在mapview中为多边形添加NAME_ASCI字段标签的方法
你可以通过以下几种方式在mapview绘制的地图上添加NAME_ASCI字段的标签:
一、悬停显示标签(最简单的方法)
mapview自带label参数,直接指定要显示的字段即可,鼠标悬停在多边形上时会弹出对应名称:
library(mapview) library(leaflet) # 用公式形式指定字段,写法简洁 mapview(franconia, alpha.regions = 0.2, alpha = 1, label = ~NAME_ASCI)
也可以写成完整字段引用形式:label = franconia$NAME_ASCI,效果完全一致。
二、固定显示中心标签(始终可见)
如果希望标签一直显示在每个多边形的中心位置,需要结合leaflet的addLabelOnlyMarkers方法,步骤如下:
library(mapview) library(leaflet) library(sf) # 用于计算多边形中心点 # 先计算每个多边形的中心点坐标 centroids <- st_centroid(franconia) # 生成mapview地图后,追加固定显示的标签 mapview(franconia, alpha.regions = 0.2, alpha = 1) %>% addLabelOnlyMarkers( data = centroids, label = ~NAME_ASCI, labelOptions = labelOptions(noHide = TRUE, direction = "center") )
labelOptions(noHide = TRUE)确保标签始终显示,direction = "center"让标签居中对齐。
三、点击弹出标签(弹窗形式)
如果需要点击多边形才显示名称,可以用popup参数,用法和label一致:
mapview(franconia, alpha.regions = 0.2, alpha = 1, popup = ~NAME_ASCI)
内容的提问来源于stack exchange,提问作者Salvador
相关产品推荐
相关产品推荐

