Para acompanhar uma viagem no seu app para o consumidor, primeiro você precisa definir um mapa e adicionar 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 para uma camada de base de mapas e um controlador de visualização.
- Adicione suporte a gráficos vetoriais do Android para exibir 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 de mapa para criar o mapa em que você compartilha uma viagem on demand no seu aplicativo para o consumidor. Para definir seu mapa, siga um destes métodos:
ConsumerMapFragment: use para definir seu 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.
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 de viagem como um fragmento usandoConsumerMapFragmentou como uma visualização usandoConsumerMapView.O fragmento ou a visualização fornece acesso ao mapa de viagem que seu app pode acessar e modificar. O mapa também fornece um identificador para o
ConsumerController, que permite que o 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" />Chame
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 o elemento. A classe de base da atividade ou do fragmento precisa ser uma
FragmentActivityou umaFragmentde suporte (respectivamente), já que elas fornecem acesso ao ciclo de vida.GoogleMapOptions(que pode ser nulo), contendo atributos de configuração para oMapView.
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 é igual ao exemplo anterior de
MapView em uma atividade, exceto que o fragmento infla 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 para uma camada de base de mapas e um controlador de visualização
Para compartilhar o progresso da viagem no seu app, adicione as seguintes classes: ConsumerGoogleMap e ConsumerController.
Receba
ConsumerGoogleMapdeConsumerMapFragmentouConsumerMapView, que retornam de forma assíncronaConsumerGoogleMapemConsumerMapReadyCallback.ConsumerGoogleMapé uma classe wrapper para a classeGoogleMap. Ele usa uma API equivalente aGoogleMappara que seu app possa interagir com o mapa. Dessa forma, o 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 o app registre callbacks que são chamados sequencialmente.Compre
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 seu app exigir suporte para gráficos vetoriais, adicione suporte para dispositivos Android e drawables vetoriais seguindo estas etapas:
- Adicione o código abaixo à 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