New Map Renderer

An upgraded map renderer is available as of version 18.2.0 of the Maps SDK for Android. This renderer brings many improvements, including support for Cloud-based maps styling.

The new renderer provides the following benefits:

  • Cloud-based maps styling features are available with the new renderer.
  • Advanced Polyline Customizations are available with the new renderer.
  • Reduced network load, processing demand, and memory consumption.
  • Improved gesture handling for better animations, plus smoother panning and zooming.
  • More fluid transitions and clearly positioned map labels.
  • A more stable and improved user experience.

Rollout schedule

In March of 2024, Google began to automatically update all the deployed apps on a device to use the upgraded renderer. Automatic updates will occur incrementally over the coming months based on the device, meaning end-user devices will be updated at different times during the update period.

Automatic updates apply to all apps running on devices that meet the minimum device requirements, regardless of the version of the Maps SDK for Android used by the app.

The automatic updates don't apply to:

  • Apps that have already updated to use the upgraded renderer.

  • Apps that have explicitly opted out of the upgrade.

  • Apps running on devices that don't meet the minimum device requirements.

What happens when the default renderer changes?

The default renderer became the upgraded renderer with the release of version 18.2.0 of the Maps SDK for Android. To take advantage of the upgraded renderer, you can either build your new apps, or rebuild any existing apps, using the new SDK version. Or, you can wait until your deployed app is automatically updated by Google.

After the update, your app can take advantage of all the new features and benefits available in the upgraded renderer.

However, if you decide to opt-out of the change, your app continues to use the legacy renderer. See Opt-out of using the upgraded renderer for example code on how to opt-out.

Supported devices

Automatic update applies to all devices that meet these criteria, regardless of the version of the Maps SDK for Android used by the app:

  • Android 5.0 (API level 21) or later
  • Using Google Play services version 21.39.14 or later

Devices using Android 4.4W (API level 20) and earlier or using Google Play services versions 21.39.13 or earlier continue to use the legacy renderer.

Opt-out of using the upgraded renderer

If necessary, you can explicitly opt-out of using the upgraded renderer to use the legacy renderer in your app.

To opt-out:

Your code must call MapsInitializer.initialize() before any MapView, MapFragment, or SupportMapFragment has been created. We recommend calling this in onCreate for your app's Application, or Activity, before its content view is set.

The following example shows how to call MapsInitializer.initialize() to opt-out to use the legacy map renderer.

Kotlin

import com.google.android.gms.maps.MapsInitializer
import com.google.android.gms.maps.MapsInitializer.Renderer
import com.google.android.gms.maps.OnMapsSdkInitializedCallback

internal class MapRendererOptInApplication : Application(), OnMapsSdkInitializedCallback {
  override fun onCreate() {
    super.onCreate()
    MapsInitializer.initialize(applicationContext, Renderer.LEGACY, this)
  }

  override fun onMapsSdkInitialized(renderer: MapsInitializer.Renderer) {
    when (renderer) {
      Renderer.LATEST -> Log.d("MapsDemo", "The latest version of the renderer is used.")
      Renderer.LEGACY -> Log.d("MapsDemo", "The legacy version of the renderer is used.")
    }
  }
}

Java

import com.google.android.gms.maps.MapsInitializer;
import com.google.android.gms.maps.MapsInitializer.Renderer;
import com.google.android.gms.maps.OnMapsSdkInitializedCallback;

class MapRendererOptInApplication extends Application implements OnMapsSdkInitializedCallback {

  @Override
  public void onCreate() {
    super.onCreate();
    MapsInitializer.initialize(getApplicationContext(), Renderer.LEGACY, this);
  }

  @Override
  public void onMapsSdkInitialized(MapsInitializer.Renderer renderer) {
    switch (renderer) {
      case LATEST:
        Log.d("MapsDemo", "The latest version of the renderer is used.");
        break;
      case LEGACY:
        Log.d("MapsDemo", "The legacy version of the renderer is used.");
        break;
    }
  }
}