Skip to content

[iOS/Android] Mapbox Standard sea/ocean labels are missing while Standard Satellite works #1144

Description

@SimonR-Nano

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)

Mapbox Standard on Android with labels missing

Android — Standard Satellite (labels visible)

Mapbox Standard Satellite on Android with Balearic Sea and Mediterranean Sea 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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions