[Feat] HeatmapLayer: render more consistently across zoom levels
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 14.6k
- Forks
- 2.3k
- Avg merge
- 2d 9h
- Merged PRs (30d)
- 42
Description
Target Use Case
It would be nice to have a way to keep a Heatmap rendering consistently across multiple zoom levels. Currently zooming in results in significant changes to the visualization which can be disorienting.
deck.gl current behavior
(via deck.gl HeatmapLayer docs)
https://user-images.githubusercontent.com/120596/227360722-f92f12c3-4693-4e7d-8df7-bbefb0c21cc6.mp4
Examples of expected behavior
Uber
- movement.uber.com - note how it's not as disorienting when zooming in, since the heatmap doesn't change too abruptly when rerendering:
https://user-images.githubusercontent.com/120596/227361397-74701107-68c3-4545-ad5e-c6aba3e69e10.mp4
ArcGIS docs
- ArcGIS - zooming results in rendering changes that aren't too jarring:
https://user-images.githubusercontent.com/120596/227363837-051516d4-e7a0-40fb-806a-12986d582548.mp4
Related discussions
- https://github.com/visgl/deck.gl/discussions/6908
- https://github.com/visgl/deck.gl/discussions/7191
- https://github.com/visgl/deck.gl/issues/5003 - this issue is adjusting weight based on zoom level, presumably this wouldn't be needed if there was a way to make heatmap display more consistently across zoom levels.
Proposal
Some layers such as Scatterplot allow users to set radiusUnits to meters which helps make visualizations more consistent across zoom levels. It would be nice if HeatmapLayer had something like radiusUnits as well, though this would probably require a breaking change (radiusPixels would need to be renamed to radius).
Alternatively it would be nice to have some new boolean property to turn on which would result in more consistent rendering between different zoom levels.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the HeatmapLayer API and documentation, then review discussions 6908 and 7191 and issue 5003 for prior context. Compare the current zoom behavior with the linked Uber and ArcGIS examples. Done should mean an agreed API and heatmap rendering that changes less abruptly across zoom levels, with the behavior documented.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- data-visualization
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100