mapbox / mapbox/mapbox-gl-js

Global collision detection (>0.42.0) regresses performance of rendering very dense symbol layers

Open
#5,891 13 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

performance :zap:
Dominant language
TypeScript
Stars
12.4k
Forks
2.4k
PR merge metrics
No merged PRs in 30d

Description

Based on initial discussion in #5865

### Steps to Trigger Behavior

1. Render a fairly dense symbol layer with icons/images
2. Zoom in/out

Demo at https://codepen.io/anon/pen/YYwoKx (change version to 0.41.0 to see how it should work)

### Expected Behavior
That performance and visual rendering is similar to that in 0.41.0.

### Actual Behavior
Performance is significantly worse in 0.42.0 and later versions. The visual representation is also quite different, even with icon-allow-overlap and icon-ignore-placement set to true which ought to avoid collision detection.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Begin with the CodePen reproduction and the initial discussion in issue #5865, comparing version 0.41.0 with 0.42.0 and later while profiling dense symbol-layer zooming. Done means performance and visual rendering return to the 0.41.0 behavior, including when icon-allow-overlap and icon-ignore-placement are enabled.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript, typescript
Domain
computer-graphics, frontend, performance
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.