ESRI JS API 4.15 点FeatureLayer单要素标签仅缩放后可见问题
问题成因
- 标签自动避让机制触发:ArcGIS系列地图SDK默认开启标签冲突避让规则,当标签与点要素符号、底图标注或其他标签重叠时,会自动隐藏该标签。变更比例尺后要素相对位置发生变化,标签不再重叠就会正常显示。
- 图片点符号异步加载导致尺寸计算错误:你使用的是picture-marker类型的自定义点符号,初始渲染图层时图片资源还未加载完成,SDK计算标签避让时使用了默认的点符号尺寸,误判标签与点符号重叠就隐藏了标签。比例尺变更触发重绘时图片已经加载完成,拿到了正确的30*50px的符号尺寸,避让计算通过标签就正常显示。
- 标签显示范围与图层显示范围不匹配:如果图层设置了自定义的可见比例尺范围,而标签未配置对应范围,也可能出现初始比例尺下标签不显示的问题。
修复方案
- 关闭标签避让规则:在你的labelingInfo配置项中添加
allowOverlap: true属性,强制显示所有标签不受避让规则限制,修改后的labelingInfo参考:
"labelingInfo": [ { "labelExpressionInfo": { "expression": "$feature.nums" }, "labelPlacement": "center-center", "allowOverlap": true, // 新增该行关闭标签避让 "symbol": { "type": "text", "color": "black", "haloColor": "white", "xoffset": -2, "yoffset": 13, "font": { "size": 7, "family": "sans-serif", "weight": "bolder" } } } ]
- 预加载点符号图片:在图层初始化前提前加载三个点符号png资源到浏览器缓存,避免初始渲染时符号尺寸计算错误。
- 同步图层与标签的可见范围:如果你的FeatureLayer配置了minScale、maxScale属性,给LabelClass也设置相同的数值,保证范围匹配。
问题截图:
内容的提问来源于stack exchange,提问作者nadiamoa
相关产品推荐
相关产品推荐

