setPaintProperty(layerId, '[icon|text]-opacity', ...) will raise on a undefined uniformName
Open
Nobody has claimed this yet.
api :memo:
bug :lady_beetle:
- Dominant language
- TypeScript
- Stars
- 12.4k
- Forks
- 2.4k
- PR merge metrics
- No merged PRs in 30d
Description
mapbox-gl-js version: 0.50.0
browser: Chrome Version 69.0.3497.100
Context
Map with several layers (symbols and texts).
setPaintProperty(layerId, '[icon|text]-opacity', ...) on multiple layers will sometimes raise the following error:
Uncaught TypeError: Cannot read property 'set' of undefined
at SourceExpressionBinder.setUniforms (mapbox-gl-dev.js:16727)
at ProgramConfiguration.setUniforms (mapbox-gl-dev.js:17332)
at Program.draw (mapbox-gl-dev.js:53626)
at drawSymbolElements (mapbox-gl-dev.js:55164)
at drawLayerSymbols (mapbox-gl-dev.js:55139)
at Object.drawSymbols [as symbol] (mapbox-gl-dev.js:54913)
at Painter.renderLayer (mapbox-gl-dev.js:59165)
at Painter.render (mapbox-gl-dev.js:59121)
at Map._render (mapbox-gl-dev.js:65617)
at mapbox-gl-dev.js:65725
setUniforms @ mapbox-gl-dev.js:16727
setUniforms @ mapbox-gl-dev.js:17332
draw @ mapbox-gl-dev.js:53626
drawSymbolElements @ mapbox-gl-dev.js:55164
drawLayerSymbols @ mapbox-gl-dev.js:55139
drawSymbols @ mapbox-gl-dev.js:54913
renderLayer @ mapbox-gl-dev.js:59165
render @ mapbox-gl-dev.js:59121
_render @ mapbox-gl-dev.js:65617
(anonymous) @ mapbox-gl-dev.js:65725
requestAnimationFrame (async)
frame @ mapbox-gl-dev.js:2468
triggerRepaint @ mapbox-gl-dev.js:65723
_render @ mapbox-gl-dev.js:65654
(anonymous) @ mapbox-gl-dev.js:65725
requestAnimationFrame (async)
frame @ mapbox-gl-dev.js:2468
triggerRepaint @ mapbox-gl-dev.js:65723
_render @ mapbox-gl-dev.js:65654
(anonymous) @ mapbox-gl-dev.js:65725
requestAnimationFrame (async)
frame @ mapbox-gl-dev.js:2468
triggerRepaint @ mapbox-gl-dev.js:65723
_update @ mapbox-gl-dev.js:65532
(anonymous) @ mapbox-gl-dev.js:64168
fire @ mapbox-gl-dev.js:2853
fire @ mapbox-gl-dev.js:2879
update @ mapbox-gl-dev.js:51758
_render @ mapbox-gl-dev.js:65596
(anonymous) @ mapbox-gl-dev.js:65725
requestAnimationFrame (async)
frame @ mapbox-gl-dev.js:2468
triggerRepaint @ mapbox-gl-dev.js:65723
_update @ mapbox-gl-dev.js:65532
setPaintProperty @ mapbox-gl-dev.js:65220
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 at SourceExpressionBinder.setUniforms and ProgramConfiguration.setUniforms, reached from setPaintProperty through symbol rendering; use the reported opacity updates across multiple symbol and text layers as the reproduction. Done means the sequence no longer raises “Cannot read property 'set' of undefined” during rendering.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript, typescript
- Domain
- frontend, web-dev
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 30/100