如何在 deck.gl 的图标层中使用 svg

how to Using svg in iconlayer of deck.gl

我的测试代码

     const layer = 
    new IconLayer({
      id: 'icon-layer',
      data,
      getIcon: d=> ({data : 'data/test.svg', width:128, height:128}),
      getSize: d => Math.max(2, Math.min(d.contributions / 1000 * 25, 25)),
      pickable: true,
      sizeScale: 15,
      getPosition: d => [127.14467,31.39953]
    });

我收到一个错误。

icon-manager.js:366 DOMException: The source image cannot be decoded.

如何在 deck.gl 的图标层中使用 svg?

根据 API referencegetIcon 回调的返回对象必须包含 url 属性。来自文档:

getIcon: d => ({
  url: d.avatar_url,
  width: 128,
  height: 128,
  anchorY: 128
}),

在您的示例中,您需要将 url 属性 重命名为 data

您可以将自己的 svg 上传到 deck.gl,它不必只是 url。

看看这个:

我检查了 svg 文件。 svg文件中除英文和数字外的所有语言不得包含。 例如:韩国人、日本人…… 如果只有英文版,就可以。