Wenn Sie einer Fahrt in Ihrer Consumer-App folgen 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:
- Kartenausschnitt definieren, um einer Fahrt zu folgen
- Unterstützung für eine Karten-Basisebene und einen View-Controller hinzufügen:
- 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 Kamerasteuerelemente hinzufügen, um die visuelle Darstellung anzupassen. Weitere Informationen finden Sie unter Karte gestalten.
Schritt 1: Kartenfragment zum Folgen einer Fahrt definieren
Sie definieren eine Karte, indem Sie ein Kartenfragment oder eine Kartenansicht hinzufügen, um die Karte zu erstellen, auf der Sie eine On-Demand-Fahrt in Ihrer Verbraucher-App teilen. Folgen Sie dazu einer der folgenden Methoden:
ConsumerMapFragment
: Damit können Sie Ihre Karte mit einemFragment
definieren.ConsumerMapView
: Damit können Sie eine Karte mit einemView
definieren.
Die Funktionen sind bei beiden Methoden gleich. Wählen Sie also 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
So erstellen Sie eine Karte, auf der der Fortschritt einer Fahrt angezeigt wird, entweder mit einem Android-Fragment oder einer Ansicht: Folgen Sie dieser Anleitung und sehen Sie sich die Codebeispiele an.
Definieren Sie ein Fragment oder eine Ansicht in der XML-Datei für das Anwendungs-Layout unter
/res/layout
. Definieren Sie die Karte für die Reise entweder als Fragment mitConsumerMapFragment
oder als Ansicht mitConsumerMapView
.Das Fragment oder die Ansicht bietet dann Zugriff auf die Karte der Reise, auf die Ihre App zugreifen und die sie ändern kann. Die Karte bietet auch einen Handle für die
ConsumerController
, mit dem Ihre App die Nutzerfreundlichkeit steuern und anpassen kann.Rufen Sie in der Methode
onCreate()
die MethodegetConsumerGoogleMapAsync(callback)
auf, dieConsumerGoogleMap
asynchron im Callback zurückgibt.Verwenden Sie
ConsumerGoogleMap
, um den Fortschritt der Fahrt anzuzeigen und bei Bedarf zu aktualisieren.ConsumerGoogleMap
Beispiel für das Hinzufügen von ConsumerMapFragment
Definieren Sie das Fragment in der XML-Datei für das Anwendungs-Layout, 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" />
Rufen Sie
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" />
Rufe
getConsumerGoogleMapAsync()
überonCreate()
an. Fügen Sie zusätzlich zum Callback-Parameter die folgenden Details ein:Die enthaltende Aktivität oder das enthaltende Fragment. Die Basisklasse für die Aktivität oder das Fragment muss entweder
FragmentActivity
oderFragment
(jeweils) sein, da sie Zugriff auf den Lebenszyklus bietet.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 ist dasselbe wie im vorherigen Beispiel für MapView
in einer Aktivität, mit der Ausnahme, 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 Karten-Basisebene und einen View-Controller 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
entweder überConsumerMapFragment
oderConsumerMapView
ab. Beide gebenConsumerGoogleMap
asynchron inConsumerMapReadyCallback
zurück.ConsumerGoogleMap
ist eine Wrapper-Klasse für die KlasseGoogleMap
. Dazu wird eine API verwendet, 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 Callback-Registrierung zu,ConsumerGoogleMap
unterstützt jedoch zwei registrierte Callbacks. Mit diesen Callbacks kann Ihre App Callbacks registrieren, die sequenziell aufgerufen werden.ConsumerController
vonConsumerGoogleMap
ingetConsumerController()
erhaltenConsumerController
bietet Zugriff auf Funktionen für die Routenfreigabe, z. B. zum Überwachen von Routen, Steuern des Routenstatus und Festlegen von Orten.
In den folgenden Beispielen sehen Sie, wie Sie ConsumerGoogleMap
und ConsumerController
in Java und Kotlin in Ihre App einfü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 für das Design Ihrer App Unterstützung für Vektorgrafiken erforderlich ist, fügen Sie mit diesen Schritten Unterstützung für Android-Geräte und Vektordrawables hinzu:
- Fügen Sie Ihrer Aktivität den folgenden Code hinzu. Dieser Code erweitert
AppCompatActivity
, um die Vektordrawables 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() {
// ...
}