Leaflet入门求助:为多边形添加mabsurvey@data$ID标签(附代码)
解决Leaflet复合多边形添加对应ID标签的问题
嘿,看你正在Leaflet里折腾多边形标签的事儿,我来给你捋捋!你现在的核心问题是标签引用的方式有点小问题,咱们调整一下就能搞定~
问题分析
你在addPolygons(data = mabsurvey)里用了label=~mabsurvey@data$ID,其实当你指定了data参数后,Leaflet已经把这个数据源作为当前上下文了,直接引用列名ID就行,不用再加mabsurvey@data$前缀,不然反而可能导致标签和多边形不对应哦。
修正后的完整代码
我把你的代码调整了一下,补全了没写完的部分(假设accessareas_c是要加的另一个多边形图层):
leaflet(as.data.frame(position)) %>% addTiles() %>% # 这里直接用~ID引用mabsurvey里的ID列 addPolygons(data = mabsurvey, color = 'grey', opacity = 0.4, label = ~ID, # 修正这里! # 可选:给标签加样式,比如鼠标悬停才显示,调整位置 labelOptions = labelOptions(noHide = FALSE, direction = "auto", style = list("font-weight" = "bold"))) %>% addPolygons(data = accessareas, fill = F, color = 'black', opacity = 0.5) %>% addPolygons(data = accessareas_c, fill = F, color = 'red', opacity = 0.7) # 补全你没写完的部分
额外小提示
- 如果你的
ID是数值类型,担心显示格式问题,可以转成字符型:label = ~as.character(ID) - 要是想让标签一直显示(不用鼠标悬停),把
labelOptions里的noHide改成TRUE
这样调整后,33个多边形就能各自对应上mabsurvey里的ID标签啦!
内容的提问来源于stack exchange,提问作者user41509
相关产品推荐
相关产品推荐

