1

我正在开发一个应用程序,它基本上是一个协作绘图工具。

我有一个巨大的 SVG 原图 (4.5 MB),用户可以登录 pan 并在这个原图上绘制他们自己的画。

我使用 react-native-svg 和 react-native-svg-transformer。我尝试了 2 种方法,但都失败或不够好:

第一个是添加资产并导入为:

import Earth from './FinalEarth.svg';

问题是它向我显示了这个错误:

RangeError:超出最大调用堆栈大小。

This error is located at:
    in SvgComponent (at DrawView.js:265) 

另一种方法是从 URI 加载它。像这样:

 <Svg
        style={styles.drawSurface}
        width={this.props.width}
        height={this.props.height}
      >
        <G
          transform={{
            translateX: left * resolution,
            translateY: top * resolution,
            scale: zoom
          }}
        >
         <SvgCssUri
            width="100%"
            height="100%"
            uri="myurl//EarthCompact.svg?alt=media&token=3435369a-6fb7-4d05-91ca-b6b7c7a2e28e"
          />

使用这种方法,我有两个问题:

我不能有装载机。所以它显示一个空白屏幕,当它从我的服务器下载 4 MB 时,只显示一个空白屏幕。

然后,加载时,缩放或平移时的性能也太差了。

有人对这种情况下的最佳方法有什么建议吗?

4

0 回答 0