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-color expression based on measure-light and the colorWater config.
- 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.
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/standardrenders no text labels, while changing only the style URI tomapbox://styles/mapbox/standard-satelliterenders place labels and the two sea labels at the exact same camera.Environment
mapbox_maps_flutter: 2.29.1sdk_gphone64_x86_64Minimal reproduction
The following minimal reproduction was run on Android:
Run with a valid public access token, then change only
styleUrito:No custom sources, layers, annotations, localization calls, overlays, or camera changes are involved in the Android minimal reproduction.
Observed behavior
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-labelandwater-point-labellayers using the samenatural_labelsource, filters, font, placement, and text field.A notable difference is their paint expression:
text-colorexpression based onmeasure-lightand thecolorWaterconfig.As an Android diagnostic only, cloning the same
natural_labelwater-label layers into the minimal app with a fixedtext-colormakes 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.