You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JS定义内嵌SVG文本不显示问题求助(Google Maps AdvancedMarkerElement)

问题:JS定义的SVG中文本无法显示,图形正常

我在纯JS定义的SVG里尝试显示文本,图形能正常渲染,但文本始终不显示。在线SVG查看器测试结果一致:图形正常,文本无输出。我编写了如下SVG字符串,用于Google Maps的AdvancedMarkerElement标记内容:

SVGstring = '<svg xmlns="http://www.w3.org/2000/svg" width="26" height="26" viewBox="-3 -49 52 52" > <style>svg { margin-top: 3px margin-bottom: 3px margin-right: 3px margin-left: 3px}</style> <path  stroke="black" stroke-width="3" d="m 0,0 l 0,-25 l 23,0 l 7,-20 l 7,20 l 3,0 l 0,25 z" fill="#9494ff"  /><text x="20" y="35" font = "20px sans-serif" fill="black" >999</text></svg>'

设置标记内容的代码:

pinSvg = document.createElement('pinSvg');
pinSvg.innerHTML = SVGstring; 
marker.content = pinSvg;

解决方法

1. 调整文本位置到viewBox范围内

你的SVG viewBox是-3 -49 52 52,可见区域的y轴范围是从-49到-49+52=3。文本的y="35"完全超出了这个范围,所以看不到。把y值改成viewBox内的数值,比如y="-10":

<text x="20" y="-10" ... >999</text>

2. 修正字体属性写法

SVG的<text>元素推荐分开使用font-size和font-family属性,避免解析兼容问题:

<text x="20" y="-10" font-size="20" font-family="sans-serif" fill="black" >999</text>

3. 替换自定义元素为正确的SVG解析方式

用document.createElement('pinSvg')创建自定义元素可能导致SVG解析异常,改用DOMParser直接解析SVG字符串:

const parser = new DOMParser();
const svgDoc = parser.parseFromString(SVGstring, 'image/svg+xml');
const pinSvg = svgDoc.documentElement;
marker.content = pinSvg;

修改后的完整SVG字符串示例

SVGstring = '<svg xmlns="http://www.w3.org/2000/svg" width="26" height="26" viewBox="-3 -49 52 52" > <style>svg { margin: 3px; }</style> <path stroke="black" stroke-width="3" d="m 0,0 l 0,-25 l 23,0 l 7,-20 l 7,20 l 3,0 l 0,25 z" fill="#9494ff" /><text x="20" y="-10" font-size="20" font-family="sans-serif" fill="black">999</text></svg>'

内容的提问来源于stack exchange,提问作者Paul Beard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 16:33:10