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 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 umFragment
.ConsumerMapView
: usado 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 da viagem como um fragmento usandoConsumerMapFragment
ou como uma visualização usandoConsumerMapView
.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()
, chamegetConsumerGoogleMapAsync(callback)
, que retorna oConsumerGoogleMap
de forma assíncrona no callback.Use o
ConsumerGoogleMap
para 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" />
Ligue 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 base de atividade ou fragmento precisa ser um
FragmentActivity
ou umFragment
de suporte (respectivamente), já que eles 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 é 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
ConsumerGoogleMap
deConsumerMapFragment
ouConsumerMapView
, que retornam de forma assíncronaConsumerGoogleMap
emConsumerMapReadyCallback
.ConsumerGoogleMap
é uma classe wrapper para a classeGoogleMap
. Ele usa um equivalente de API aGoogleMap
para que seu app possa interagir com o mapa. Dessa forma, seu app pode interagir perfeitamente com o mesmo mapa do Google. Por exemplo,GoogleMap
permite apenas um registro de callback, masConsumerGoogleMap
aceita callbacks registrados duplos. Esses callbacks permitem que seu app registre callbacks chamados sequencialmente.Receba
ConsumerController
deConsumerGoogleMap
emgetConsumerController()
.O
ConsumerController
oferece 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
AppCompatActivity
para 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