0

我正在使用 mapbox 构建一个网站来呈现大约 24mb 的 geojson 数据。我将这些数据存储在后端服务器中,API 请求大约需要 2300 毫秒,而前端地图显示这些数据需要 10 多秒。

GeoJson 是包含许多MultiLineString. 数据被清理。

以下是步骤:

  1. 用户打开网站
  2. 站点在服务器端点获取数据
  3. 站点接收获取的数据(geojson - 其中 9 个)
  4. React 为每个 geojson 集创建一个层,并将这些信息作为状态传递给 Mapbox 组件
  5. Mapbox 获取这些数据并进行渲染,我相信这是花费最多时间的地方。

这是数据格式: https ://eflow.nyc3.digitaloceanspaces.com/class_geo_data/classGeo.json

我的问题:

  1. 渲染数据需要这么长时间的原因是什么?是不是因为线段太多了?我已经看到在更短的时间内呈现超过 100mb 的数据。
  2. 在 Mapbox 中渲染此数据集的最佳实践是什么?

我正在使用react-map-gl,不确定实际使用的是哪个版本的 mapbox gl。

谢谢狮子座

依赖项:

“babel-plugin-transform-decorators-legacy”:“^1.3.4”,“babel-plugin-transform-runtime”:“^6.23.0”,“babel-preset-es2015”:“^6.24.1” ,“babel-preset-stage-0”:“^6.24.1”,“copy-webpack-plugin”:“4.3.1”,“webpack-dotenv-plugin”:“^2.0.2”,“动画。 css”:“3.6.1”,“axios”:“0.18.0”,“d3”:“4.13.0”,“flexboxgrid”:“6.3.1”,“get-json”:“1.0.0” ,“不可变”:“3.8.2”,“material-ui”:“0.19.4”,“object-assign”:“4.1.0”,“react”:“16.2.0”,“react-dom” :“16.2.0”,“react-map-gl”:“3.2.0”,“react-redux”:“5.0.5”,“react-router-dom”:“4.2.2”,“react-router-redux”:“5.0. 0-alpha.6”、“redux”:“3.6.0”、“redux-thunk”:“2.1.0”、“superagent”:“3.8.1”、“topojson”:“3.0.2”

4

1 回答 1

1

我不确定为什么这要快得多,但正确的方法是:

  1. 将我的数据集分成更小的卡盘
  2. 将每个作为图层加载到 mapbox studio 中,并加载到您创建的地图样式中
  3. 下载整个 json 文件
  4. 使用 Mapbox 渲染地图

这是一种与我原来的方法完全不同的方法,它是从我自己的 API 获取数据,然后让 Mapbox 渲染它。但是它将加载速度从 10+ 秒降低到 1-2 秒

于 2018-03-08T02:49:25.163 回答