Configura una mappa

Seleziona la piattaforma: Android iOS

Per seguire un viaggio nella tua app consumer, devi prima definire una mappa e aggiungere il supporto per le mappe vettoriali, se necessario.

Per configurare una mappa nella tua app, procedi nel seguente modo:

  1. Definire un frammento di mappa per la condivisione del percorso.
  2. Aggiungere il supporto di un livello di base e di un controller di visualizzazione per le mappe.
  3. Aggiungi il supporto della grafica vettoriale Android per visualizzare il vettore mappe, se necessario.

Dopo aver definito una mappa, puoi aggiungere ulteriori visualizzazioni e una videocamera controlli per personalizzare l'esperienza visiva. Per ulteriori dettagli, consulta Applicare uno stile a una mappa.

Passaggio 1: definisci un frammento di mappa per la condivisione del percorso

Puoi definire una mappa aggiungendo un frammento o una vista per creare la mappa dove condividi un viaggio on demand nella tua app consumer. Per definire la mappa: segui uno di questi metodi:

  • ConsumerMapFragment: utilizzalo per definire la mappa con un Fragment

  • ConsumerMapView: utilizza questa opzione per definire una mappa con un View

Le funzionalità sono le stesse per entrambi i metodi, quindi scegli quale è più adatta alla tua applicazione.

Entrambi i metodi sono descritti più dettagliatamente nella sezione seguente.

Aggiungere una visualizzazione o un frammento di mappa

Per creare una mappa per visualizzare l'avanzamento del percorso utilizzando un frammento o una vista Android, segui questi passaggi e fai riferimento alle esempi di codice.

  1. Definisci un frammento o una visualizzazione nel file XML di layout dell'applicazione che si trova in /res/layout. Definisci la mappa di condivisione del percorso come frammento utilizzando ConsumerMapFragment o come visualizzazione utilizzando ConsumerMapView.

    Il frammento o la vista fornisce quindi l'accesso al percorso condividere una mappa a cui l'app può accedere e che può modificare. La mappa fornisce anche a ConsumerController, che consente alla tua app di controllare e personalizzare l'esperienza di condivisione del percorso.

  2. Dal tuo metodo onCreate(), chiama getConsumerGoogleMapAsync(callback), che restituisce ConsumerGoogleMap in modo asincrono nel callback.

  3. Utilizza ConsumerGoogleMap per visualizzare la posizione del percorso e aggiornarla in base alle esigenze.

Esempio di come aggiungere ConsumerMapFragment

  1. Definisci il frammento nel file XML di layout dell'applicazione, come mostrato in nel seguente esempio di codice.

    <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. Chiama getConsumerGoogleMapAsync() dal 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()!!
         }
       }
     )
   }
 }

Esempio di come aggiungere ConsumerMapView

  1. Utilizza la vista in un frammento o in un'attività, come definito nei 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. Chiama getConsumerGoogleMapAsync() da onCreate(). Nella oltre al parametro di callback, includi i seguenti dettagli:

    • L'attività o il frammento contenitore. L'attività o la base del frammento il corso deve essere un FragmentActivity o un Fragment di assistenza (rispettivamente), poiché forniscono accesso al suo ciclo di vita.

    • GoogleMapOptions (che può essere nullo), contenente la configurazione attributi per 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,
    )
  }
}

Un MapView in un frammento è uguale all'esempio precedente per MapView in un'attività, tranne per il fatto che il frammento gonfia il layout che include MapView nel metodo del frammento onCreateView().

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)
  }
}

Passaggio 2: aggiungi il supporto per un livello base delle mappe e per il controller della vista

Per attivare la condivisione del percorso nella tua app, aggiungi il seguenti corsi alla tua app: ConsumerGoogleMap e ConsumerController.

  • Ottieni ConsumerGoogleMap da ConsumerMapFragment o ConsumerMapView, che restituiscono entrambi in modo asincrono ConsumerGoogleMap a ConsumerMapReadyCallback.

    ConsumerGoogleMap è una classe wrapper per la classe GoogleMap. Utilizza un API equivalente a GoogleMap per consentire alla tua app di interagire con la mappa. In questo modo, la tua app può interagire senza problemi con lo stesso mappa. Ad esempio, GoogleMap consente una sola registrazione di callback, ma ConsumerGoogleMap supporta i callback con doppia registrazione. Questi callback ti consentono l'app registra i callback che vengono chiamati in sequenza.

  • Ricevi ConsumerController da ConsumerGoogleMap a getConsumerController().

    ConsumerController dà accesso a funzionalità di condivisione del percorso come monitorare le corse, controllare lo stato delle corse e impostare le località.

Per sapere come aggiungere ConsumerGoogleMap e ConsumerController alla tua app in per Java e Kotlin, fai riferimento ai seguenti esempi.

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,
  }
)

Passaggio 3: aggiungi il supporto per la grafica vettoriale Android

Se la progettazione della tua app richiede il supporto per la grafica vettoriale, aggiungi il supporto per Dispositivi Android e disegnabili vettoriali seguendo questa procedura:

  1. Aggiungi il seguente codice alla tua attività. Questo codice si estende AppCompatActivity per utilizzare i drawables Vector nell'SDK consumer.

Java

// ...
import android.support.v7.app.AppCompatActivity;

// ...

public class ConsumerTestActivity extends AppCompatActivity {
  // ...
}

Kotlin

// ...
import android.support.v7.app.AppCompatActivity

// ...

class ConsumerTestActivity : AppCompatActivity() {
  // ...
}

Passaggi successivi

Seguire un viaggio in Android Applica uno stile a una mappa