google_maps_flutter_android

The Android implementation of google_maps_flutter.

Usage

This package is endorsed, which means you can simply use google_maps_flutter normally. This package will be automatically included in your app when you do.

Display Mode

This plugin supports two different platform view display modes. The default display mode is subject to change in the future, and will not be considered a breaking change, so if you want to ensure a specific mode you can set it explicitly:

import 'package:google_maps_flutter_android/google_maps_flutter_android.dart';
import 'package:google_maps_flutter_platform_interface/google_maps_flutter_platform_interface.dart';

void main() {
  // Require Hybrid Composition mode on Android.
  final GoogleMapsFlutterPlatform mapsImplementation =
      GoogleMapsFlutterPlatform.instance;
  if (mapsImplementation is GoogleMapsFlutterAndroid) {
    mapsImplementation.useAndroidViewSurface = true;
  }
  // ···
}

Hybrid Composition

This is the current default mode, and corresponds to useAndroidViewSurface = true. It ensures that the map display will work as expected, at the cost of some performance.

Texture Layer Hybrid Composition

This is a new display mode used by most plugins starting with Flutter 3.0, and corresponds to useAndroidViewSurface = false. This is more performant than Hybrid Composition, but currently misses certain map updates.

This mode will likely become the default in future versions if/when the missed updates issue can be resolved.

Map renderer

This plugin supports the option to request a specific map renderer.

The renderer must be requested before creating GoogleMap instances, as the renderer can be initialized only once per application context.

AndroidMapRenderer mapRenderer = AndroidMapRenderer.platformDefault;
// ···
  final GoogleMapsFlutterPlatform mapsImplementation =
      GoogleMapsFlutterPlatform.instance;
  if (mapsImplementation is GoogleMapsFlutterAndroid) {
    WidgetsFlutterBinding.ensureInitialized();
    mapRenderer = await mapsImplementation
        .initializeWithRenderer(AndroidMapRenderer.latest);
  }

Available values are AndroidMapRenderer.latest, AndroidMapRenderer.legacy, AndroidMapRenderer.platformDefault. Note that getting the requested renderer as a response is not guaranteed.