我一直在将多边形的FeatureCollection渲染到Map中(在一个GeoJSONLayer
中)。每个多边形的大小很大(5mb,10mb)。通过用户交互,多边形的颜色将不断重新计算和更改。我们使用data-driven
方法并将数据保存在每个特征的属性中。因此,每当数据和颜色发生变化时,GeoJSONLayer
就必须调用.setData(geojson)
(它们保存在属性中)。我发现上面的方法导致性能问题,因为geojsons
的大小很大,并且调用.setData()
是昂贵的。我正在考虑分离geojson源和数据,样式,着色和调用直接function (setPaintProperty)
,只要颜色改变将比。
有人告诉我,.setData
和.setPaintProperty
会做同样的事情,两者都会触发重新渲染整个多边形。
请就此问题提供建议
非常感谢!
如果我理解正确,你会问这两个中哪一个更快:
map.setData(mylayer, mygeojson)
map.setPaintProperty(mylayer, 'fill-color', ...mydatadrivenproperty)
我没有测试过,但我认为第二个更快,因为第一个必须:
而第二个只需解析财产重绘。试试看他们两个。
您还可以考虑第三种方法,即第二层是一个突出显示,您可以通过调用map.setFilter(mylayer, ...)
来更新。