Configurar um mapa

Selecione a plataforma: Android iOS

Para acompanhar uma viagem no seu app para o consumidor, primeiro você precisa definir um mapa e adicionar suporte para mapas vetoriais, se necessário.

Para configurar um mapa no seu app, siga estas etapas:

  1. Definir um fragmento de mapa para compartilhar a jornada.
  2. Adicionar suporte a uma camada base de mapas e a um controlador de visualização.
  3. Adicionar suporte a gráficos vetoriais do Android para mostrar imagens vetoriais mapas, se necessário.

Depois de definir um mapa, você pode adicionar outras visualizações e câmeras controles nos quais você deseja personalizar a experiência visual. Para mais detalhes, consulte Estilizar um mapa.

Etapa 1: definir um fragmento de mapa para compartilhamento da jornada

Você define um mapa adicionando um fragmento ou uma visualização para criar o mapa onde você compartilha uma viagem sob demanda no seu app para o consumidor. Para definir seu mapa, siga um destes métodos:

  • ConsumerMapFragment: use para definir o mapa com um Fragment.

  • ConsumerMapView: use para definir um mapa com um View.

Os recursos são os mesmos para os dois métodos, então escolha qual método é melhor para seu aplicativo.

Os dois métodos são explicados com mais detalhes na próxima seção.

Adicionar uma visualização ou um fragmento de mapa

Para criar um mapa para exibir o andamento da viagem usando um fragmento ou uma visualização do Android, siga estas etapas e consulte o exemplos de código.

  1. Defina um fragmento ou uma visualização no arquivo XML de layout do aplicativo localizado em /res/layout: Defina o mapa de compartilhamento da jornada como um fragmento usando o ConsumerMapFragment ou como uma visualização usando ConsumerMapView.

    O fragmento ou visualização fornece acesso à jornada. mapa de compartilhamento que seu aplicativo pode acessar e modificar. O mapa também fornece uma o alça até o ConsumerController, que permite que o app controle e personalizar a experiência de compartilhamento de jornadas.

  2. No método onCreate(), chame getConsumerGoogleMapAsync(callback), que retorna ConsumerGoogleMap de forma assíncrona na chamada de retorno.

  3. Use o ConsumerGoogleMap para exibir o progresso da viagem e atualizar conforme necessário.

Exemplo de como adicionar ConsumerMapFragment

  1. Defina o fragmento no arquivo XML de layout do aplicativo, conforme mostrado em o 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" />
    
  2. Faça uma chamada para getConsumerGoogleMapAsync() no 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

  1. Use a visualização em um fragmento ou 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" />
    
  2. Faça a chamada de onCreate() para getConsumerGoogleMapAsync(). Em Além do parâmetro de callback, inclua os seguintes detalhes:

    • A atividade ou fragmento que o contém. Base de atividade ou fragmento A classe precisa ser FragmentActivity ou um Fragment de suporte (respectivamente), já que dão acesso ao ciclo de vida.

    • GoogleMapOptions (que pode ser nulo), contendo a 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 do exemplo anterior para 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 a uma camada base de mapas e ao controlador de visualização

Para ativar o compartilhamento de viagens no app, adicione o seguintes classes para seu app: ConsumerGoogleMap e ConsumerController.

  • Receba ConsumerGoogleMap do ConsumerMapFragment ou ConsumerMapView, que retornam de forma assíncrona. ConsumerGoogleMap em ConsumerMapReadyCallback.

    ConsumerGoogleMap é uma classe de wrapper para a classe GoogleMap. Ele usa uma API equivalente a GoogleMap para que seu app possa interagir com o mapa. Dessa forma, seu aplicativo pode interagir perfeitamente com as mesmas mapa. Por exemplo, GoogleMap permite apenas um único registro de callback, mas ConsumerGoogleMap oferece suporte a callbacks registrados duplos. Esses callbacks permitem o app registra callbacks que são chamados sequencialmente.

  • Receba ConsumerController de ConsumerGoogleMap no getConsumerController().

    O ConsumerController fornece acesso a recursos de compartilhamento de jornada, como monitorar viagens, controlar o status de viagens e definir locais.

Para adicionar ConsumerGoogleMap e ConsumerController ao app em Java e Kotlin, consulte os exemplos abaixo.

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 aplicativo exigir compatibilidade com gráficos vetoriais, adicione suporte para Dispositivos Android e drawables vetoriais seguindo estas etapas:

  1. Adicione o código a seguir à sua atividade. Esse código se 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

Seguir uma viagem no Android Estilizar um mapa