ArcGIS for JavaScript 4.21中TextSymbol使用Emoji报错问题咨询
ArcGIS for JavaScript 4.21 SimpleText含Emoji渲染异常解决方案
问题根因
ArcGIS for JavaScript 4.x版本默认采用WebGL引擎渲染文本,会预先将指定字体的字符集打包为纹理资源加载,内置默认字体(如报错中提到的josefin-slab-regular)未覆盖Emoji对应的Unicode码点,触发字体 fallback 后仍未匹配到可支持Emoji渲染的字体资源,就会抛出invalid-resource异常。3.x版本采用DOM模式渲染文本,直接调用系统字体能力,因此不会出现该问题。
可行修复方案
- 调整SimpleText的字体配置,优先指定系统原生支持Emoji的字体,示例配置如下:
const textSymbol = { type: "text", text: "👩", font: { family: "'Segoe UI Emoji', 'Apple Color Emoji', 'Arial Unicode MS', sans-serif", size: 12 } };
- 若字体配置修改后仍异常,可在MapView初始化时强制指定文本渲染模式为DOM,对齐3.x的渲染逻辑:
const view = new MapView({ container: "viewDiv", map: map, textRendering: "dom" });
- 可升级ArcGIS for JavaScript到4.23及以上版本,官方在该版本后优化了WebGL渲染模式下的Emoji字符支持,无需额外配置即可正常渲染Emoji文本。
- 也可放弃使用独立SimpleText,改用面要素的LabelClass绑定标注实现相同效果,标注组件对特殊字符的兼容度更高。
内容的提问来源于stack exchange,提问作者Tomáš Zachoval
相关产品推荐
相关产品推荐

