Karte einrichten

Plattform auswählen: Android iOS

Wenn Sie eine Fahrt in Ihrer Verbraucher-App verfolgen möchten, müssen Sie zuerst eine Karte definieren und bei Bedarf Unterstützung für Vektorkarten hinzufügen.

So richten Sie eine Karte in Ihrer App ein:

  1. Kartenfragment definieren, um einer Fahrt zu folgen
  2. Unterstützung für eine Kartenebene und einen Ansichts-Controller hinzufügen
  3. Unterstützung für Android-Vektorgrafiken hinzufügen, um bei Bedarf Vektorkarten anzuzeigen.

Nachdem Sie eine Karte definiert haben, können Sie zusätzliche Ansichten und Kamera-Steuerelemente hinzufügen, um die visuelle Darstellung anzupassen. Weitere Informationen finden Sie unter Karte gestalten.

Schritt 1: Kartenfragment für die Fahrtverfolgung definieren

Sie definieren eine Karte, indem Sie ein Kartenfragment oder eine Ansicht hinzufügen, um die Karte zu erstellen, auf der Sie eine On-Demand-Fahrt in Ihrer Verbraucher-App teilen. Folgen Sie einer der folgenden Methoden, um Ihre Karte zu definieren:

  • ConsumerMapFragment: Wird verwendet, um die Karte mit einem Fragment zu definieren.

  • ConsumerMapView: Wird verwendet, um eine Karte mit einem View zu definieren.

Die Funktionen sind bei beiden Methoden gleich. Wählen Sie die Methode aus, die für Ihre Anwendung besser geeignet ist.

Beide Methoden werden im folgenden Abschnitt ausführlicher erläutert.

Kartenfragment oder -ansicht hinzufügen

Wenn Sie eine Karte erstellen möchten, auf der der Fahrtfortschritt entweder mit einem Android-Fragment oder einer Ansicht angezeigt wird, folgen Sie dieser Anleitung und sehen Sie sich die Codebeispiele an.

  1. Definieren Sie ein Fragment oder eine Ansicht in der XML-Datei für das Anwendungslayout, die sich in /res/layout befindet. Definieren Sie die Karte für die Fahrt entweder als Fragment mit ConsumerMapFragment oder als Ansicht mit ConsumerMapView.

    Das Fragment oder die Ansicht bietet dann Zugriff auf die Fahrtenkarte, auf die Ihre App zugreifen und die sie ändern kann. Die Karte bietet auch ein Handle für die ConsumerController, mit dem Ihre App die Nutzererfahrung steuern und anpassen kann.

  2. Rufe in der Methode onCreate() die Methode getConsumerGoogleMapAsync(callback) auf, die den ConsumerGoogleMap asynchron im Callback zurückgibt.

  3. Verwenden Sie die ConsumerGoogleMap, um den Fortschritt der Fahrt anzuzeigen und bei Bedarf zu aktualisieren.

Beispiel für das Hinzufügen von ConsumerMapFragment

  1. Definieren Sie das Fragment in der XML-Datei für das Anwendungslayout, wie im folgenden Codebeispiel gezeigt.

    <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. Rufen Sie getConsumerGoogleMapAsync() über die Methode onCreate() auf.

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

Beispiel für das Hinzufügen von ConsumerMapView

  1. Verwenden Sie die Ansicht entweder in einem Fragment oder in einer Aktivität, wie in der XML-Datei definiert.

     <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. Rufe getConsumerGoogleMapAsync() von onCreate() aus an. Geben Sie zusätzlich zum Callback-Parameter die folgenden Details an:

    • Die Aktivität oder das Fragment, in dem sich die Ansicht befindet. Die Basisklasse der Aktivität oder des Fragments muss entweder FragmentActivity oder ein Support-Fragment sein, da sie Zugriff auf den Lebenszyklus bietet.

    • GoogleMapOptions (kann null sein) mit Konfigurationsattributen für 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,
    )
  }
}

Ein MapView in einem Fragment entspricht dem MapView in einer Aktivität im vorherigen Beispiel. Der Unterschied besteht darin, dass das Fragment das Layout, das das MapView enthält, in der Fragmentmethode onCreateView() aufbläht.

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

Schritt 2: Unterstützung für eine Kartenebene und einen Ansichts-Controller hinzufügen

Wenn Sie den Fahrtfortschritt in Ihrer App teilen möchten, fügen Sie die folgenden Klassen hinzu: ConsumerGoogleMap und ConsumerController.

  • Rufen Sie ConsumerGoogleMap entweder über ConsumerMapFragment oder ConsumerMapView ab. Beide geben ConsumerGoogleMap asynchron in ConsumerMapReadyCallback zurück.

    ConsumerGoogleMap ist eine Wrapper-Klasse für die Klasse GoogleMap. Es wird eine API verwendet, die GoogleMap entspricht, damit Ihre App mit der Karte interagieren kann. So kann Ihre App nahtlos mit derselben zugrunde liegenden Google-Karte interagieren. GoogleMap lässt beispielsweise nur eine einzige Callback-Registrierung zu, während ConsumerGoogleMap zwei registrierte Callbacks unterstützt. Mit diesen Callbacks kann Ihre App Callbacks registrieren, die nacheinander aufgerufen werden.

  • ConsumerController von ConsumerGoogleMap in getConsumerController() abrufen.

    ConsumerController bietet Zugriff auf Funktionen zur Freigabe von Fahrten, z. B. zum Überwachen von Fahrten, zum Steuern des Fahrtstatus und zum Festlegen von Standorten.

In den folgenden Beispielen wird gezeigt, wie Sie ConsumerGoogleMap und ConsumerController in Java und Kotlin zu Ihrer App hinzufügen.

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

Schritt 3: Unterstützung für Android-Vektorgrafiken hinzufügen

Wenn das Design Ihrer App die Unterstützung von Vektorgrafiken erfordert, fügen Sie die Unterstützung für Android-Geräte und Vektor-Drawables mit den folgenden Schritten hinzu:

  1. Fügen Sie Ihrer Aktivität den folgenden Code hinzu. Dieser Code erweitert AppCompatActivity, um die Vektor-Drawables im Consumer SDK zu verwenden.

Java

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

// ...

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

Kotlin

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

// ...

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

Weitere Informationen

Fahrt in Android verfolgen

Karte gestalten