使用数据驱动改变大geojson颜色的性能(与使用setPaintProperty相比)

问题描述 投票:0回答:1

我一直在将多边形的FeatureCollection渲染到Map中(在一个GeoJSONLayer中)。每个多边形的大小很大(5mb,10mb)。通过用户交互,多边形的颜色将不断重新计算和更改。我们使用data-driven方法并将数据保存在每个特征的属性中。因此,每当数据和颜色发生变化时,GeoJSONLayer就必须调用.setData(geojson)(它们保存在属性中)。我发现上面的方法导致性能问题,因为geojsons的大小很大,并且调用.setData()是昂贵的。我正在考虑分离geojson源和数据,样式,着色和调用直接function (setPaintProperty),只要颜色改变将比。

有人告诉我,.setData.setPaintProperty会做同样的事情,两者都会触发重新渲染整个多边形。

请就此问题提供建议

非常感谢!

mapbox-gl-js mapbox-gl
1个回答
0
投票

如果我理解正确,你会问这两个中哪一个更快:

map.setData(mylayer, mygeojson)

map.setPaintProperty(mylayer, 'fill-color', ...mydatadrivenproperty)

我没有测试过,但我认为第二个更快,因为第一个必须:

  1. 解析GeoJSON
  2. 将其转换为矢量切片
  3. 重绘

而第二个只需解析财产重绘。试试看他们两个。

您还可以考虑第三种方法,即第二层是一个突出显示,您可以通过调用map.setFilter(mylayer, ...)来更新。

© www.soinside.com 2019 - 2024. All rights reserved.