Zhi-Ling

You can do Everything you want

0%

SvgToBase64

Brief Intro: Difficulties while transforming Svg to base64

接上文,Marker 数量较多的情况下会比较影响地图加载的性能,因此考虑将 Marker 点都转换成 symbol 方式添加

整体思路

  • 获取到 react 组件的 html
  • 通过 html 转换成 canvas,生成图片
  • canvas.toDataUrl () 转 base64
  • mapboxgl 可直接接受 base64 格式图片

方式一:采用 html2canvas

通过这种方式的确是可以获取到截图,但是 html2canvas 不能解析 svg 及下面的 dom 节点,因为获取到的结果一个白板。因此考虑换种可以支持的方式 canvg

方式二:采用 canvg

实践得到图标组件到图片 base64 的转换,可以直接赋值给 mapboxgl。


所有的踩坑到此结束,虽然代码比较简单,但是整个实践和踩坑过程艰难又麻烦,好几次想放弃,幸好最后的结果还是令自己满意。

Welcome to my other publishing channels