MapBox.表上悬停事件的高亮效果.SetData需要2秒才能更新具有6000个功能的源



我正试图通过在表的行上悬停来实现高亮效果。我得到了与Mapbox的点特征相关的数据表。我通过我的rxjs状态更新映射点的样式(状态的每一次更改都会调用映射上的样式更新(。对于较小的特征计数,它工作得很好,但在地图上更新6000点的样式需要2秒。直接设置数据执行需要150-200毫秒,但渲染需要1-3秒。如何提高Mapbox在执行任务时的性能?正如我所写的,我在地图上有6000个点,当我把光标悬停在表中的一行上时,我想改变2个点的样式。通过更改特性的图层来实现样式的更改(可能是这样吗?(。

谢谢你的任何想法。github问题。

setFeatureState是更新具有许多特征的地图上少数特征样式的最有效方法。

它确实有一定的局限性:它只适用于具有要素ID的图层,并且并非所有样式都可以通过要素状态进行控制(尤其是icon-image等布局特性不能(。

此处的文档:https://docs.mapbox.com/mapbox-gl-js/api/#map#setfeaturestate

我发现了突出显示任何资源的更高效的方法。我只是为选定/高亮显示的资源和一个或几个样式层使用另一个数据源。您只需要将选定的资源放在另一个数据源中,并根据选定的样式绘制它们。这对通用数据源没有影响,也不需要重新计算资源状态,只需在基于资源的基础上绘制选定的资源即可。

最新更新