Wenn Sie eine Fahrt in Ihrer Verbraucher-App verfolgen möchten, müssen Sie zuerst eine Karte definieren und gegebenenfalls die Unterstützung für Vektorkarten hinzufügen.
So richten Sie eine Karte in Ihrer App ein:
- Definieren Sie ein Kartenfragment, das einer Fahrt folgt.
- Unterstützung für eine Kartengrundlage und einen Ansichtscontroller hinzufügen
- Fügen Sie die Unterstützung für Android-Vektorgrafiken hinzu, um bei Bedarf Vektorkarten anzuzeigen.
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 Kartenstil festlegen.
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 einemFragment
definieren.ConsumerMapView
: Damit wird eine Karte mit einerView
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 beschrieben.
Kartenfragment oder -ansicht hinzufügen
Wenn Sie eine Karte erstellen möchten, um den Fortschritt der Fahrt mit einem Android-Fragment oder einer Ansicht anzuzeigen, folgen Sie diesen Schritten und sehen Sie sich die Codebeispiele an.
Definieren Sie ein Fragment oder eine Ansicht in der XML-Datei des App-Layouts unter
/res/layout
. Definieren Sie die Fahrtkarte entweder als Fragment mitConsumerMapFragment
oder als Ansicht mitConsumerMapView
.Das Fragment oder die Ansicht bietet dann Zugriff auf die Fahrtkarte, auf die Ihre App zugreifen und 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.Rufen Sie in der Methode
onCreate()
getConsumerGoogleMapAsync(callback)
auf, wodurchConsumerGoogleMap
im Callback asynchron zurückgegeben wird.Mit der Taste
ConsumerGoogleMap
können Sie den Fortschritt der Fahrt anzeigen und bei Bedarf aktualisieren.
Beispiel für das Hinzufügen von ConsumerMapFragment
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" />
Rufe
getConsumerGoogleMapAsync()
über die MethodeonCreate()
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
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" />
getConsumerGoogleMapAsync()
überonCreate()
anrufen Fügen Sie zusätzlich zum Callback-Parameter die folgenden Details hinzu:Die Aktivität oder das Fragment, in der sie enthalten ist. Die Basisklasse der Aktivität oder des Fragments muss entweder eine
FragmentActivity
oder eine unterstützendeFragment
sein, da sie Zugriff auf den Lebenszyklus gewähren.GoogleMapOptions
(kann null sein), mit Konfigurationsattributen für dieMapView
.
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
.
Rufen Sie
ConsumerGoogleMap
ausConsumerMapFragment
oderConsumerMapView
ab. Beide gebenConsumerGoogleMap
inConsumerMapReadyCallback
asynchron zurück.ConsumerGoogleMap
ist eine Wrapper-Klasse für die KlasseGoogleMap
. Es verwendet eine API, dieGoogleMap
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 einzelne Callback-Registrierung zu,ConsumerGoogleMap
unterstützt aber doppelt registrierte Callbacks. Mit diesen Callbacks kann Ihre App Callbacks registrieren, die nacheinander aufgerufen werden.ConsumerController
vonConsumerGoogleMap
ingetConsumerController()
erhaltenConsumerController
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 in deinem App-Design Vektorgrafiken erforderlich sind, füge die Unterstützung für Android-Geräte und Vektor-Drawables hinzu. Das geht so:
- 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