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

时间:2017-12-22 05:30:11

标签: mapbox-gl-js mapbox-gl

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

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

请就此事提供建议

非常感谢!

1 个答案:

答案 0 :(得分:0)

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

map.setData(mylayer, mygeojson)

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

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

  1. 解析GeoJSON
  2. 将其转换为矢量图块
  3. 重画
  4. 而第二个只需要解析属性重绘。试试看他们两个。

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