Para acompanhar uma viagem no aplicativo para o consumidor, primeiro defina um mapa e adicione suporte a mapas vetoriais, se necessário.
Para configurar um mapa no app, siga estas etapas:
- Defina um fragmento de mapa para acompanhar uma viagem.
- Adicione 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 visualização para criar o mapa em que você compartilha uma viagem sob demanda no aplicativo para o consumidor. Para definir o mapa, siga um destes métodos:
ConsumerMapFragment: use para definir o mapa com umFragment.ConsumerMapView: Use para definir um mapa com umView.
Os recursos são os mesmos para os dois métodos. Escolha o que for melhor para seu aplicativo.
Ambos os métodos são explicados com mais detalhes na seção a seguir.
Adicionar um fragmento ou 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 visualização no arquivo XML de layout do aplicativo localizado em
/res/layout. Defina o mapa da viagem como um fragmento usandoConsumerMapFragmentou como uma visualização usandoConsumerMapView.O fragmento ou a visualização fornece acesso ao mapa da viagem que seu app pode acessar e modificar. O mapa também fornece um identificador para o
ConsumerController, que permite que seu app controle e personalize a experiência do consumidor.No método
onCreate(), chamegetConsumerGoogleMapAsync(callback), que retorna oConsumerGoogleMapde 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étodoonCreate().
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" />Faça a chamada para
getConsumerGoogleMapAsync()deonCreate(). Além do parâmetro de callback, inclua os seguintes detalhes:A atividade ou o fragmento que contém. A classe base da atividade ou do fragmento precisa ser uma
FragmentActivityou umFragmentde suporte (respectivamente), já que eles fornecem acesso ao ciclo de vida.GoogleMapOptions(que pode ser nulo), contendo atributos de configuração para aMapView.
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,
)
}
}
Uma MapView em um fragmento é a mesma do exemplo anterior para MapView em uma atividade, exceto que o fragmento infla o layout que inclui a 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 progresso da viagem no app, adicione as seguintes classes: ConsumerGoogleMap e ConsumerController.
Receba
ConsumerGoogleMapdeConsumerMapFragmentouConsumerMapView, que retornamConsumerGoogleMapde forma assíncrona emConsumerMapReadyCallback.ConsumerGoogleMapé uma classe wrapper para a classeGoogleMap. Ela usa uma API equivalente aGoogleMappara 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, masConsumerGoogleMapoferece suporte a callbacks registrados duplos. Esses callbacks permitem que seu app registre callbacks que são chamados sequencialmente.Receba
ConsumerControllerdeConsumerGoogleMapemgetConsumerController().ConsumerControllerfornece acesso a recursos de compartilhamento de viagens, como monitorar viagens, controlar o status da viagem 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 drawables vetoriais seguindo estas etapas:
- Adicione o seguinte código à 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