mapbox / mapbox/mapbox-maps-flutter
[iOS/Android] Mapbox Standard sea/ocean labels are missing while Standard Satellite works
Nobody has claimed this yet.
- Dominant language
- Dart
- Stars
- 380
- Forks
- 204
- PR merge metrics
- No merged PRs in 30d
Description
Summary
Sea and ocean labels are missing from a custom Mapbox Standard-based style in the same Flutter app on both iOS and Android. Country and city labels still render, but labels such as “Balearic Sea” and “Mediterranean Sea” do not. The labels are visible in Mapbox Studio at the same camera.
Switching to Standard Satellite makes the sea labels appear. I also isolated the problem on Android with an official-style minimal reproduction: mapbox://styles/mapbox/standard renders no text labels, while changing only the style URI to mapbox://styles/mapbox/standard-satellite renders place labels and the two sea labels at the exact same camera.
Environment
- Affected platforms in the Flutter app: iOS and Android
mapbox_maps_flutter: 2.29.1- Mapbox Maps Core Android: 11.29.1
- Mapbox Common Android: 24.29.1
- Flutter: 3.41.5 (stable)
- Dart: 3.11.3
- Android minimal repro: Android 16 / API 36
- Android device: Emulator
sdk_gphone64_x86_64 - Android ABI: x86_64
- Android rendering backend: Impeller OpenGLES
- The iOS symptom has been reproduced in the app, but the exact iOS device/OS details and official-style minimal repro have not yet been collected.
Minimal reproduction
The following minimal reproduction was run on Android:
import 'package:flutter/material.dart';
import 'package:mapbox_maps_flutter/mapbox_maps_flutter.dart';
void main() {
WidgetsFlutterBinding.ensureInitialized();
MapboxOptions.setAccessToken(
const String.fromEnvironment('MAPBOX_ACCESS_TOKEN'),
);
runApp(const App());
}
class App extends StatelessWidget {
const App({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: MapWidget(
styleUri: 'mapbox://styles/mapbox/standard',
cameraOptions: CameraOptions(
center: Point(coordinates: Position(3.04309, 38.36985)),
zoom: 5.5,
),
),
),
);
}
}
Run with a valid public access token, then change only styleUri to:
styleUri: 'mapbox://styles/mapbox/standard-satellite',
No custom sources, layers, annotations, localization calls, overlays, or camera changes are involved in the Android minimal reproduction.
Observed behavior
- iOS and Android app, custom Standard-based style: country and city labels render, but sea/ocean labels are missing.
- Android minimal repro, official Standard: no text labels render.
- Android minimal repro, official Standard Satellite: place labels, “Balearic Sea”, and “Mediterranean Sea” render at the same camera.
Expected behavior
Standard should render its water labels consistently with Mapbox Studio and Standard Satellite on both iOS and Android.
Screenshots
Both screenshots were captured from the same Android emulator, with the same SDK version, camera center, zoom, and minimal widget.
Android — Standard (labels missing)
Android — Standard Satellite (labels visible)
Additional investigation
The published Standard and Standard Satellite style JSONs both contain water-line-label and water-point-label layers using the same natural_label source, filters, font, placement, and text field.
A notable difference is their paint expression:
- Standard uses a
text-colorexpression based onmeasure-lightand thecolorWaterconfig. - Standard Satellite uses a simple HSL color.
As an Android diagnostic only, cloning the same natural_label water-label layers into the minimal app with a fixed text-color makes the missing sea labels appear immediately. This suggests the Standard label paint expression may be involved, but I have not proven that as the root cause on either platform.
I could not find an existing open or closed issue matching Standard water labels on iOS or Android.
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 Android minimal reproduction in the issue and compare the official Standard and Standard Satellite styles at the stated camera. Inspect the water-label layers, especially the Standard text-color expression based on measure-light and colorWater, and verify the behavior on iOS as well. Done means Standard renders the expected place and sea labels consistently with Mapbox Studio and Standard Satellite.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- dart, flutter
- Domain
- mobile
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100