Para acompanhar uma viagem no seu app para consumidores, primeiro defina um mapa e adicione suporte a mapas vetoriais, se necessário.
Para configurar um mapa no seu app, siga estas etapas:
- Defina um fragmento de mapa para acompanhar uma viagem.
- Adicionar suporte a uma camada de base de mapas e um controlador de visualização.
- Adicione suporte a gráficos vetoriais do Android para mostrar mapas vetoriais, se necessário.
Depois de definir um mapa, você pode adicionar outras visualizações e controles de câmera para personalizar a experiência visual. Para mais detalhes, consulte Estilizar um mapa.
Etapa 1: definir um fragmento de mapa para acompanhar uma viagem
Para definir um mapa, adicione um fragmento ou uma visualização para criar o mapa em que você compartilha uma viagem sob demanda no seu app para consumidores. Para definir o mapa, siga um destes métodos:
- ConsumerMapFragment: use para definir seu mapa com um- Fragment.
- ConsumerMapView: usado para definir um mapa com um- View.
Os recursos são os mesmos para os dois métodos. Escolha o que for melhor para seu aplicativo.
Os dois métodos são explicados em mais detalhes na seção a seguir.
Adicionar um fragmento ou uma visualização de mapa
Para criar um mapa que mostre o progresso da viagem usando um fragmento ou uma visualização do Android, siga estas etapas e consulte os exemplos de código.
- Defina um fragmento ou uma visualização no arquivo XML de layout do aplicativo localizado em - /res/layout. Defina o mapa da viagem como um fragmento usando- ConsumerMapFragmentou como uma visualização usando- ConsumerMapView.- O fragmento ou a visualização fornece acesso ao mapa da viagem, que pode ser acessado e modificado pelo app. O mapa também fornece um handle para o - ConsumerController, que permite que seu app controle e personalize a experiência do consumidor.
- No método - onCreate(), chame- getConsumerGoogleMapAsync(callback), que retorna o- ConsumerGoogleMapde forma assíncrona no callback.
- Use o - ConsumerGoogleMappara mostrar o progresso da viagem e atualizar conforme necessário.
Exemplo de como adicionar ConsumerMapFragment
- Defina o fragmento no arquivo XML de layout do aplicativo, conforme mostrado no exemplo de código a seguir. - <fragment xmlns:android="http://schemas.android.com/apk/res/android" android:name="com.google.android.libraries.mapsplatform.transportation.consumer.view.ConsumerMapFragment" android:id="@+id/consumer_map_fragment" android:layout_width="match_parent" android:layout_height="match_parent" />
- Faça uma chamada para - getConsumerGoogleMapAsync()no método- onCreate().
Java
 public class SampleAppActivity extends AppCompatActivity {
   @Override
   protected void onCreate(Bundle savedInstanceState) {
     // Find the ConsumerMapFragment.
     ConsumerMapFragment consumerMapFragment =
         (ConsumerMapFragment) fragmentManager.findFragmentById(R.id.consumer_map_fragment);
     // Initiate the callback that returns the map.
     if (consumerMapFragment != null) {
       consumerMapFragment.getConsumerGoogleMapAsync(
           new ConsumerMapReadyCallback() {
             // The map returned in the callback is used to access the ConsumerController.
             @Override
             public void onConsumerMapReady(@NonNull ConsumerGoogleMap consumerGoogleMap) {
               ConsumerController consumerController = consumerGoogleMap.getConsumerController();
             }
           });
     }
   }
 }
Kotlin
 class SampleAppActivity : AppCompatActivity() {
   override fun onCreate(savedInstanceState: Bundle?) {
     // Find the ConsumerMapFragment.
     val consumerMapFragment =
       fragmentManager.findFragmentById(R.id.consumer_map_fragment) as ConsumerMapFragment
     consumerMapFragment.getConsumerGoogleMapAsync(
       object : ConsumerMapReadyCallback() {
         override fun onConsumerMapReady(consumerGoogleMap: ConsumerGoogleMap) {
           val consumerController = consumerGoogleMap.getConsumerController()!!
         }
       }
     )
   }
 }
Exemplo de como adicionar ConsumerMapView
- Use a visualização em um fragmento ou em uma atividade, conforme definido no arquivo XML. - <com.google.android.libraries.mapsplatform.transportation.consumer.view.ConsumerMapView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/consumer_map_view" android:layout_width="match_parent" android:layout_height="match_parent" />
- Ligue para - getConsumerGoogleMapAsync()de- onCreate(). Além do parâmetro de callback, inclua os seguintes detalhes:- A atividade ou o fragmento que contém. A classe base de atividade ou fragmento precisa ser um - FragmentActivityou um- Fragmentde suporte (respectivamente), já que eles fornecem acesso ao ciclo de vida.
- GoogleMapOptions(que pode ser nulo), contendo atributos de configuração para o- MapView.
 
Java
public class SampleAppActivity extends AppCompatActivity {
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    ConsumerMapView mapView = findViewById(R.id.consumer_map_view);
    if (mapView != null) {
      mapView.getConsumerGoogleMapAsync(
          new ConsumerMapReadyCallback() {
            // The map returned in the callback is used to access the ConsumerController.
            @Override
            public void onConsumerMapReady(@NonNull ConsumerGoogleMap consumerGoogleMap) {
              ConsumerController consumerController = consumerGoogleMap.getConsumerController();
            }
          }, this, null);
    }
  }
}
Kotlin
class SampleAppActivity : AppCompatActivity() {
  override fun onCreate(savedInstanceState: Bundle?) {
    val mapView = findViewById(R.id.consumer_map_view) as ConsumerMapView
    mapView.getConsumerGoogleMapAsync(
      object : ConsumerMapReadyCallback() {
        // The map returned in the callback is used to access the ConsumerController.
        override fun onConsumerMapReady(consumerGoogleMap: ConsumerGoogleMap) {
          val consumerController = consumerGoogleMap.getConsumerController()!!
        }
      },
      /* fragmentActivity= */ this,
      /* googleMapOptions= */ null,
    )
  }
}
Um MapView em um fragmento é o mesmo que no exemplo anterior para
MapView em uma atividade, exceto que o fragmento aumenta o layout que
inclui o MapView no método onCreateView() do fragmento.
Java
public class MapViewInFragment extends Fragment {
  @Override
  public View onCreateView(
      @NonNull LayoutInflater layoutInflater,
      @Nullable ViewGroup viewGroup,
      @Nullable Bundle bundle) {
    return layoutInflater.inflate(R.layout.consumer_map_view, viewGroup, false);
  }
}
Kotlin
class MapViewInFragment : Fragment() {
  override fun onCreateView(
    layoutInflater: LayoutInflater,
    container: ViewGroup?,
    savedInstanceState: Bundle?,
  ): View {
    return layoutInflater.inflate(R.layout.consumer_map_view, viewGroup, false)
  }
}
Etapa 2: adicionar suporte a uma camada de base de mapas e um controlador de visualização
Para compartilhar o andamento da viagem no seu app, adicione as seguintes classes: ConsumerGoogleMap e ConsumerController.
- Receba - ConsumerGoogleMapde- ConsumerMapFragmentou- ConsumerMapView, que retornam de forma assíncrona- ConsumerGoogleMapem- ConsumerMapReadyCallback.- ConsumerGoogleMapé uma classe wrapper para a classe- GoogleMap. Ele usa um equivalente de API a- GoogleMappara que seu app possa interagir com o mapa. Dessa forma, seu app pode interagir perfeitamente com o mesmo mapa do Google. Por exemplo,- GoogleMappermite apenas um registro de callback, mas- ConsumerGoogleMapaceita callbacks registrados duplos. Esses callbacks permitem que seu app registre callbacks chamados sequencialmente.
- Receba - ConsumerControllerde- ConsumerGoogleMapem- getConsumerController().- O - ConsumerControlleroferece acesso a recursos de compartilhamento de viagens, como monitorar viagens, controlar o status delas e definir locais.
Para saber como adicionar ConsumerGoogleMap e ConsumerController ao seu app em
Java e Kotlin, consulte os exemplos a seguir.
Java
private ConsumerGoogleMap consumerGoogleMap;
private ConsumerController consumerController;
private ConsumerMapView consumerMapView;
consumerMapView.getConsumerGoogleMapAsync(
    new ConsumerMapReadyCallback() {
      @Override
      public void onConsumerMapReady(@NonNull ConsumerGoogleMap consumerMap) {
        consumerGoogleMap = consumerMap;
        consumerController = consumerMap.getConsumerController();
      }
    },
    this, null);
Kotlin
var consumerGoogleMap: ConsumerGoogleMap
var consumerController: ConsumerController
val consumerMapView = findViewById(R.id.consumer_map_view) as ConsumerMapView
consumerMapView.getConsumerGoogleMapAsync(
  object : ConsumerMapReadyCallback() {
    override fun onConsumerMapReady(consumerMap: ConsumerGoogleMap) {
      consumerGoogleMap = consumerMap
      consumerController = consumerMap.getConsumerController()
    },
    /* fragmentActivity= */ this,
    /* googleMapOptions= */ null,
  }
)
Etapa 3: adicionar suporte a gráficos vetoriais do Android
Se o design do app exigir suporte a gráficos vetoriais, adicione suporte a dispositivos Android e elementos gráficos vetoriais usando estas etapas:
- Adicione o código a seguir à sua atividade. Esse código estende
AppCompatActivitypara usar os drawables vetoriais no SDK do consumidor.
Java
// ...
import android.support.v7.app.AppCompatActivity;
// ...
public class ConsumerTestActivity extends AppCompatActivity {
  // ...
}
Kotlin
// ...
import android.support.v7.app.AppCompatActivity
// ...
class ConsumerTestActivity : AppCompatActivity() {
  // ...
}
A seguir
Acompanhar uma viagem no Android
Personalizar o estilo de um mapa