Um einer Fahrt in Ihrer Nutzer-App zu folgen, müssen Sie zuerst eine Karte erstellen und bei Bedarf Vektorkarten unterstützen.
So richten Sie eine Karte in Ihrer App ein:
- Definieren Sie ein Kartenfragment für die Fahrt mit anderen Nutzern.
- Unterstützung für Basisebene und Ansichts-Controller von Google Maps hinzufügen
- Unterstützung für Android-Vektorgrafiken hinzufügen zur Darstellung von Vektorgrafiken Karten erstellen.
Nachdem Sie eine Karte definiert haben, können Sie weitere Ansichten und Kamerafunktionen um das visuelle Erlebnis anzupassen. Weitere Informationen Siehe Karte gestalten.
Schritt 1: Kartenfragment für die Fahrt teilen
Sie definieren eine Karte, indem Sie ein Kartenfragment oder eine Ansicht hinzufügen, um die Karte zu erstellen. On-Demand-Reisen in Ihrer Nutzer-App teilen. Um Ihre Karte zu definieren, verwenden Sie eine der folgenden Methoden:
ConsumerMapFragment
: Definieren Sie Ihre Karte mit einemFragment
ConsumerMapView
: Zum Definieren einer Karte mit einemView
Die Funktionen sind für beide Methoden gleich, wählen Sie also die Methode aus. für Ihre Anwendung besser geeignet ist.
Beide Methoden werden im folgenden Abschnitt ausführlicher erläutert.
Kartenfragment oder -ansicht hinzufügen
Um eine Karte zu erstellen, auf der der Fahrtfortschritt angezeigt wird, verwenden Sie entweder Android-Fragment oder -Ansicht anzuzeigen, führen Sie diese Schritte aus und verweisen Sie auf das Codebeispiele.
Definieren Sie ein Fragment oder eine Ansicht in der XML-Datei für das Anwendungslayout unter
/res/layout
Definieren Sie die Journey Sharing Map entweder als Fragment mithilfeConsumerMapFragment
oder als Ansicht mitConsumerMapView
.Das Fragment oder die Ansicht bietet dann Zugriff auf die Journey Freigabekarte, auf die deine App zugreifen und die sie ändern kann. Die Karte enthält auch ein Handle auf das
ConsumerController
-Element, mit dem deine App steuern und die Reisefreigabe anpassen.Rufen Sie über die Methode
onCreate()
getConsumerGoogleMapAsync(callback)
auf. wodurchConsumerGoogleMap
asynchron im Callback zurückgegeben wird.Mit
ConsumerGoogleMap
können Sie den Fahrtfortschritt anzeigen und bei Bedarf aktualisieren.
Beispiel für das Hinzufügen von ConsumerMapFragment
Definieren Sie das Fragment in Ihrer Anwendungslayout-XML-Datei, wie in im folgenden Codebeispiel.
<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" />
getConsumerGoogleMapAsync()
überonCreate()
anrufen .
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 den XML-Datei.
<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" />
Rufen Sie
getConsumerGoogleMapAsync()
überonCreate()
an. In geben Sie zusätzlich zum Callback-Parameter die folgenden Details an:Die Aktivität oder das Fragment, in der sie enthalten ist. Die Aktivität oder Fragmentbasis Klasse muss entweder ein
FragmentActivity
- oder ein Support-Fragment
sein da sie Zugriff auf ihren Lebenszyklus bieten.GoogleMapOptions
(kann null sein), enthält die Konfiguration Attribute 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,
)
}
}
Eine MapView
in einem Fragment ist dieselbe wie im vorherigen Beispiel für
MapView
in einer Aktivität, mit der Ausnahme, dass das Fragment das Layout erweitert,
nimmt das MapView
in die onCreateView()
-Methode des Fragments auf.
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 Basisebene und Controller der Karte hinzufügen
Um die Freigabe von Reisen in Ihrer App zu aktivieren, fügen Sie die
folgende Klassen zu Ihrer App hinzufügen: ConsumerGoogleMap
und ConsumerController
.
ConsumerGoogleMap
entweder vonConsumerMapFragment
oderConsumerMapView
, die beide asynchron zurückgeben "ConsumerGoogleMap
" in "ConsumerMapReadyCallback
".ConsumerGoogleMap
ist eine Wrapper-Klasse für die KlasseGoogleMap
. Dabei wird ein API, dieGoogleMap
entspricht, damit deine App mit der Karte interagieren kann. So kann Ihre App nahtlos mit demselben zugrunde liegenden Google-KontoGoogleMap
lässt beispielsweise nur eine Callback-Registrierung zu, aberConsumerGoogleMap
unterstützt doppelt registrierte Callbacks. Diese Callbacks ermöglichen registriert deine App Rückrufe, die nacheinander aufgerufen werden.Hol dir
ConsumerController
vonConsumerGoogleMap
ingetConsumerController()
.ConsumerController
bietet Zugriff auf Funktionen für das Teilen von Reisen, darunter Fahrten überwachen, Fahrtstatus steuern und Orte festlegen.
Informationen zum Hinzufügen von ConsumerGoogleMap
und ConsumerController
zu deiner App in
Java und Kotlin sehen Sie sich die folgenden Beispiele an.
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 Ihr App-Design Vektorgrafiken erfordert, fügen Sie Unterstützung für Für Android-Geräte und Vektor-Drawables:
- Fügen Sie Ihrer Aktivität den folgenden Code hinzu. Dieser Code bezieht sich auf
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() {
// ...
}