新版地图渲染程序

升级版地图渲染程序自 Maps SDK for Android 18.2.0 版起提供。此版本渲染程序带来了许多的改进,包括对云端地图样式设置的支持。

新版渲染程序具有以下优势:

  • 提供了云端地图样式设置功能。
  • 可进行高级多段线自定义操作。
  • 减少了网络负载、处理需求和内存消耗。
  • 通过改进手势处理获得更好的动画效果,实现更顺畅的平移和缩放操作。
  • 更流畅的过渡和定位清晰的地图标签。
  • 更稳定、更出色的用户体验。

发布时间表

2021 年 10 月,Google 开始推出升级版地图渲染程序。届时,您即可选择在应用中使用升级版渲染程序。

随着 Maps SDK for Android 18.2.0 版的发布,Google 已将默认渲染程序从旧版渲染程序改为升级版地图渲染程序。在 18.2.0 版中,构建新应用或重新构建现有应用时,将改为使用升级版地图渲染程序。

更改默认渲染程序后会发生什么?

Maps SDK for Android 18.2.0 版发布后,升级版渲染程序将成为默认渲染程序。如要使用升级版渲染程序,您必须使用新版 SDK 构建新应用或重新构建现有应用。

但是,您也可以选择不升级地图渲染程序。如果您选择不进行升级,您的应用会继续使用旧版渲染程序。 请参阅选择停用升级版渲染程序,了解有关如何选择停用的代码示例。

支持的设备

如要使用升级版地图渲染程序,设备必须满足以下条件:

  • Android 5.0(API 级别 21)或更高版本
  • 使用的是 Google Play 服务 21.39.14 或更高版本

符合如下任一条件的设备将继续使用旧版渲染程序:使用 Android 4.4W(API 级别 20)及更低版本;或者使用 Google Play 服务 21.39.13 或更低版本。即使您的默认渲染程序更改为升级版地图渲染程序,上述设备也将继续使用旧版渲染程序。

选择停用升级版渲染程序

默认情况下,使用 Maps SDK for Android 18.2.0 版构建的应用会使用升级版渲染程序。如有必要,您可以明确停用升级版渲染程序,以便在应用中使用旧版渲染程序。

如需停用此功能,请执行以下操作:

您的代码必须在创建任何 MapViewMapFragmentSupportMapFragment 前调用 MapsInitializer.initialize()。我们建议在 onCreate 中针对应用的 ApplicationActivity 进行该项调用,然后再设置其内容视图。

以下示例展示了如何调用 MapsInitializer.initialize() 来停用升级版渲染程序,继续使用旧版渲染程序。

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;
    }
  }
}