Maplibre.gl符号图层缩放性能问题求助(超2000点)
Maplibre GL Symbol Layer 大数量点缩放性能问题
我在使用Maplibre GL的symbol layer渲染超过2000个点时,遇到了严重的缩放性能问题。无论是通过map.addImage('my_icon', img)添加独立图标,还是使用仅包含单字体的轻量字形集中的单个字母来绘制符号,问题都存在。
相关图层配置
第一种图标型配置:
{ "id": "demand-default", "layout": { "icon-image": "order_icon" }, "source": "order-source", "type": "symbol" }
第二种文本型配置:
{ "id": "demand-default", "layout": { "text-field": "o", "text-size": 10, "text-font": ["Barlow Regular"] }, "source": "order-source", "type": "symbol" }
设置icon-allow-overlap并未改善性能。我未找到任何关于symbol layer存在此类问题的公开记录,怀疑遗漏了关键配置项。
我尝试移除其他所有图层样式,仅保留该symbol layer,缩放时仍有明显卡顿;但切换为circle layer后,即便存在大量样式规则及其他图层状态,性能表现依然正常。
需要强调的是,仅缩放操作存在性能问题,拖拽和平移操作均正常。观察发现symbol layer在每个整数缩放步骤时,会触发findMatches这类耗时计算,即便样式文件完全为空也是如此。
请问symbol layer真的无法高效渲染超过一千个点吗?
附性能分析:缩放过程中findMatches方法占用大量耗时
附测试场景:10000个随机点的性能测试场景
内容的提问来源于stack exchange,提问作者Глеб Щукин
相关产品推荐
相关产品推荐

