Novo renderizador de mapa

Um renderizador de mapa atualizado está disponível a partir da versão 18.2.0 do SDK do Maps para Android. Ele traz muitas melhorias, incluindo o suporte à Estilização de mapas baseada na nuvem.

Ele oferece os seguintes benefícios:

  • Recursos de Estilização de mapas baseada na nuvem
  • Personalizações de polilinhas avançadas
  • Redução da carga de rede, da demanda de processamento e do consumo de memória
  • Processamento de gestos aprimorado para melhores animações, além de deslocamento e aplicação de zoom mais suaves
  • Transições mais fluidas e marcadores de mapa posicionados claramente
  • Uma experiência do usuário mais estável e aprimorada

Programação de lançamento

Em outubro de 2021, o Google começou a lançar o renderizador de mapa atualizado. Naquela época, você escolhia ativar ou não o recurso para usar esse novo renderizador no seu app.

Com o lançamento da versão 18.2.0 do SDK do Maps para Android, o Google mudou do renderizador de mapa padrão legado para o atualizado. Nessa versão, o renderizador usado ao desenvolver um novo app ou recriar algum atual se torna o atualizado.

O que acontece quando o renderizador padrão muda?

O renderizador padrão vira o atualizado com o lançamento da versão 18.2.0 do SDK do Maps para Android. Para aproveitar o renderizador atualizado, é necessário desenvolver novos apps ou recriar algum atual usando a nova versão do SDK.

Porém, você tem a escolha de recusar essa mudança. Nesse caso, seu app vai continuar usando o renderizador legado. Consulte Desativar o uso do renderizador atualizado se quiser um exemplo de código.

Dispositivos compatíveis

Para usar o renderizador de mapa atualizado, os dispositivos precisam atender a estes critérios:

  • Android 5.0 (nível da API 21) ou mais recente
  • 2 GB ou mais de armazenamento de dados
  • Versão 21.39.14 ou mais recente do Google Play Services

Os dispositivos com Android 4.4W (nível da API 20) e anteriores, com menos de 2 GB de armazenamento de dados ou com a versão 21.39.13 ou anterior do Google Play Services, vão continuar usando o renderizador legado, até mesmo depois que o renderizador padrão passar a ser o atualizado.

Desativar o uso do renderizador atualizado

Por padrão, os apps desenvolvidos usando a versão 18.2.0 do SDK do Maps para Android utilizam o renderizador atualizado. Se necessário, você pode desativar de forma explícita essa opção para dar preferência ao renderizador legado no seu app.

Para desativar:

Seu código precisa chamar MapsInitializer.initialize() antes da criação de qualquer MapView, MapFragment ou SupportMapFragment. Recomendamos fazer essa chamada em onCreate para Application ou Activity do seu app antes que a exibição do conteúdo seja definida.

O exemplo a seguir mostra como chamar MapsInitializer.initialize() para desativar a versão atualizada e passar a usar o renderizador de mapa legado.

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