mapbox / mapbox/mapbox-maps-android
Globe north pole cap ignores lightPreset lighting (renders unlit/white) with `night` preset on some older Android devices
Nobody has claimed this yet.
- Dominant language
- Kotlin
- Stars
- 578
- Forks
- 161
- PR merge metrics
- No merged PRs in 30d
Description
## Environment
- Android OS version:
- Devices affected:
- Maps SDK Version: 11.27.0 (also reproduced on 11.18.2)
## Observed behavior and steps to reproduce
We use a custom style based on Mapbox Standard with `lightPreset: night`, displayed in globe projection at low zoom.
On some older Android devices, the synthesized pole cap (the filler geometry above ~85°N where no tile data exists) is **not affected by the lighting system**. The night preset darkens the ocean, land, and all layers as expected — but the pole cap keeps its raw, unlit color, so it renders as a bright/white ellipse sitting on a dark ocean (screenshot attached).
Steps to reproduce:
1. Create a style based on Mapbox Standard with a light-colored authored water and set `lightPreset: night`
2. Display it in globe projection, camera at low zoom looking at high northern latitudes
3. On an affected device (I used a Google Pixel 7), observe the bright unlit circle at the north pole
4. On recent devices, the pole cap is correctly darkened and blends with the ocean
## Expected behavior
The pole cap should receive the same lighting treatment as adjacent tiles under all light presets, on all supported devices — i.e. under `lightPreset: night` it should be darkened like the surrounding ocean.
## Notes / preliminary analysis
The pole cap appears to be special-cased fill geometry that borrows its color from the adjacent tile, per the maintainer analysis in mapbox/mapbox-gl-js#12026 ("The poles borrow their color from the adjacent tile..."). Our symptom suggests that on some devices this borrowed color is applied without the 3D lighting/`measure-light` pass, while on other devices it is lit correctly.
Workaround we're using: authoring the water color dark in the style (and/or overriding `colorWater` via style import config) so the unlit cap visually matches the lit ocean.
## Screenshots
## Additional links and references
- mapbox/mapbox-gl-js#12026 Globe projection rendering issues around the poles (pole color borrowing)
- mapbox/mapbox-gl-js#12167 White poles appearing during globe-mercator transition
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 by reproducing the globe view at low zoom with lightPreset: night on an affected older Android device, then trace the synthesized north-pole cap's borrowed color through the 3D lighting and measure-light path. Compare it with adjacent tiles and the behavior on recent devices. Done means the cap is darkened consistently with the surrounding ocean under all light presets on supported devices.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- android, kotlin
- Domain
- computer-graphics, mobile-dev
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100