Karte einrichten

Plattform auswählen: Android iOS

Wenn Sie einer Fahrt in Ihrer Nutzer-App folgen möchten, müssen Sie zuerst eine Karte definieren und gegebenenfalls Vektorkarten unterstützen.

So richten Sie eine Karte in Ihrer App ein:

  1. Definieren Sie ein Kartenfragment, das einer Fahrt folgt.
  2. Unterstützung für eine Kartengrundlage und einen Ansichtscontroller hinzufügen
  3. Unterstützung für Android-Vektorgrafiken zur Darstellung von Vektorkarten, falls erforderlich

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

Schritt 1: Kartenfragment für die Route definieren

Sie definieren eine Karte, indem Sie ein Kartenfragment oder eine Kartenansicht hinzufügen, um die Karte zu erstellen, auf der Sie eine Fahrt auf Abruf in Ihrer Verbraucher-App teilen. Verwenden Sie dazu eine der folgenden Methoden:

  • ConsumerMapFragment: Hiermit können Sie Ihre Karte mit einem Fragment definieren.

  • ConsumerMapView: Damit wird eine Karte mit einer View definiert.

Die Funktionen sind bei beiden Methoden gleich. Wählen Sie daher 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, um den Fahrtfortschritt mithilfe eines Android-Fragments oder einer Ansicht anzuzeigen, führen Sie die folgenden Schritte aus und verwenden Sie die Codebeispiele.

  1. Definieren Sie ein Fragment oder eine Ansicht in der XML-Datei für das Anwendungslayout in /res/layout. Definieren Sie die Fahrtkarte 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 enthält auch einen Handle für die ConsumerController, mit dem Sie die Nutzerfreundlichkeit Ihrer App steuern und anpassen können.

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

  3. Mit der Taste ConsumerGoogleMap können Sie den Fortschritt der Fahrt anzeigen und bei Bedarf 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 Ihrer 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. Rufen Sie getConsumerGoogleMapAsync() von onCreate() aus an. Fügen Sie zusätzlich zum Callback-Parameter die folgenden Details hinzu:

    • Die enthaltene Aktivität oder das enthaltene Fragment. Die Basisklasse der Aktivität oder des Fragments muss entweder eine FragmentActivity oder eine unterstützende Fragment sein, da sie Zugriff auf den Lebenszyklus gewähren.

    • GoogleMapOptions (kann null sein), mit Konfigurationsattributen für die 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, mit der Ausnahme, dass das Fragment das Layout aufbläst, das das MapView in der Fragment-onCreateView()-Methode enthält.

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 Kartengrundlage und einen Ansichtscontroller hinzufügen

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

  • Rufe ConsumerGoogleMap entweder von ConsumerMapFragment oder ConsumerMapView ab. Beide geben ConsumerGoogleMap asynchron in ConsumerMapReadyCallback zurück.

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

  • Hol dir ConsumerController von ConsumerGoogleMap in getConsumerController().

    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 erfahren Sie, wie Sie Ihrer Anwendung in Java und Kotlin ConsumerGoogleMap und ConsumerController 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 in deinem App-Design Vektorgrafiken erforderlich sind, füge die Unterstützung für Android-Geräte und Vektor-Drawables hinzu. Das geht so:

  1. Fügen Sie Ihrer Aktivität den folgenden Code hinzu. Mit diesem Code wird AppCompatActivity auf die Verwendung der Vector-Drawables im Consumer SDK erweitert.

Java

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

// ...

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

Kotlin

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

// ...

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

Weitere Informationen

Eine Fahrt auf Android-Geräten verfolgen Kartenstil festlegen