Android-UI anpassen

Die Klasse ConsumerMapStyle verfügt über Setter- und Getter-Methoden, die Ihnen die dynamische Anpassung von Markierungen und Polylinien ermöglichen. Diese Klasse wird mit der Methode ConsumerController.getConsumerMapStyle() asynchron verfügbar gemacht.

Die UI-Anpassung bleibt über Geräterotationen hinweg und bleibt wirksam, bis das ConsumerController getrennt wird.

Benutzerdefinierte Markierungen

Die Methode zum Festlegen des Markierungstyps und seiner Eigenschaften ist ConsumerMapStyle.setMarkerStyleOptions(). Die Optionen für benutzerdefinierte Markierungen überschreiben die vom Consumer SDK bereitgestellten Standardwerte. Zum Wiederherstellen der Standardwerte rufen Sie setMarkerStyleOptions() mit null für den Parameter MarkerOptions auf. Rufen Sie die aktive MarkerOptions mit getMarkerStyleOptions() ab.

Markierungstypen

Die folgenden Markierungen können angepasst werden:

  • TRIP_PICKUP_POINT
  • TRIP_DROPOFF_POINT
  • TRIP_INTERMEDIATE_DESTINATION
  • TRIP_VEHICLE

TRIP_PICKUP_POINT und TRIP_DROPOFF_POINT werden während der Fahrtüberwachung angezeigt.

TRIP_VEHICLE wird während der Fahrtüberwachung angezeigt. Das Markierungssymbol ändert sich nicht entsprechend dem tatsächlichen Fahrzeugtyp für die Fahrt. Das Consumer SDK aktualisiert die Rotation des TRIP_VEHICLE-Symbols während der Fahrtüberwachung, um das Verhalten des tatsächlichen Fahrzeugs auf der Route nachzuahmen.

Markierungsoptionen

Die für jede Markierung verfügbaren anpassbaren Eigenschaften sind die von Google Maps MarkerOptions bereitgestellten Eigenschaften.

MarkerOptions wird mit seinem Konstruktor erstellt und die benutzerdefinierten Eigenschaften werden mithilfe von „Setter“-Stilmethoden angegeben. Für jede Eigenschaft werden Standardwerte angegeben. Sie müssen daher nur benutzerdefinierte Werte angeben.

Sie können eine Markierung deaktivieren, indem Sie visible auf false setzen. Es sollten genügend Daten bereitgestellt werden, damit Sie stattdessen Ihr eigenes UI-Element verwenden können.

Beispiel

Java

// Initializing marker options.
consumerController
    .getConsumerMapStyle()
    .addOnSuccessListener(
        consumerMapStyle -> {
          consumerMapStyle.setMarkerStyleOptions(
              MarkerType.TRIP_VEHICLE,
              new MarkerOptions()
                  .visible(false));
        });

// Reset marker options to default values.
consumerMapStyle.setMarkerStyleOptions(MarkerType.TRIP_VEHICLE, null);

Kotlin

// Initializing marker options.
consumerController
  .getConsumerMapStyle()
  .addOnSuccessListener({ consumerMapStyle ->
    consumerMapStyle.setMarkerStyleOptions(MarkerType.TRIP_VEHICLE, MarkerOptions().visible(false))
  })

// Reset marker options to default values.
consumerMapStyle.setMarkerStyleOptions(MarkerType.TRIP_VEHICLE, null)

Benutzerdefinierte Polylinien

Die Anpassung von Polylinien wird mit der Methode ConsumerMapStyle.setPolylineStyleOptions festgelegt. Wenn Sie Optionen für benutzerdefinierte Polylinien festlegen, werden die vom Consumer SDK bereitgestellten Standardwerte überschrieben. Sie können die Standardwerte wiederherstellen, indem Sie setPolylineStyleOptions mit dem Wert „null“ für den Parameter PolylineOptions aufrufen. Der aktive PolylineOptions kann mit der Methode getPolylineStyleOptions abgerufen werden.

Polylinientypen

Die folgenden Polylinientypen können angepasst werden:

  • ACTIVE_ROUTE
  • REMAINING_ROUTE

ACTIVE_ROUTE und REMAINING_ROUTE werden während der Fahrtüberwachung angezeigt und stellen die Route des Fahrzeugs dar.

Polylinieneigenschaften

Die für jede Polylinie verfügbaren anpassbaren Eigenschaften werden von Google Maps PolylineOptions bereitgestellt. PolylineOptions wird mit seinem Konstruktor erstellt und die benutzerdefinierten Eigenschaften werden mithilfe von „Setter“-Stilmethoden angegeben. Für jede Eigenschaft werden Standardwerte bereitgestellt, sodass Sie nur benutzerdefinierte Werte angeben müssen. Sie können die Polylinie deaktivieren, indem Sie visible auf false setzen.

Beispiel

Java

// Initializing polyline style options.
consumerController
    .getConsumerMapStyle()
    .addOnSuccessListener(
        consumerMapStyle -> {
          consumerMapStyle.setPolylineStyleOptions(
              PolylineType.ACTIVE_ROUTE,
              new PolylineOptions()
                  .visible(false));
        });

// Reset polyline options to default values.
consumerMapStyle.setPolylineStyleOptions(PolylineType.ACTIVE_ROUTE, null);

Kotlin

// Initializing polyline options.
consumerController
  .getConsumerMapStyle()
  .addOnSuccessListener({ consumerMapStyle ->
    consumerMapStyle.setPolylineStyleOptions(
      PolylineType.ACTIVE_ROUTE,
      PolylineOptions().visible(false)
    )
  })

// Reset polyline options to default values.
consumerMapStyle.setPolylineStyleOptions(PolylineType.ACTIVE_ROUTE, null)

Aktive und verbleibende Route

Wenn der Fahrt- und Bestellfortschritt aktiviert ist, kann Ihre App die Nutzererfahrung mithilfe von Polylinien anpassen, auf denen die aktiven und verbleibenden Routen der Fahrzeuge angezeigt werden.

Die aktive Route ist der Pfad, den das Fahrzeug derzeit zurücklegt, um den nächsten Wegpunkt in der aktiven Fahrt des Nutzers zu erreichen. Die verbleibende Route ist der Weg, den das Fahrzeug hinter der aktiven Route zurücklegt. Wenn der aktive Wegpunkt der Route der letzte Wegpunkt ist, existiert die verbleibende Route nicht.

Aktive und verbleibende Polylinien können über die Anwendung angepasst und die Sichtbarkeit gesteuert werden. Standardmäßig ist die aktive Route sichtbar und die verbleibende Route nicht.

Beispiel

Java

// Initializing polyline options.
consumerController
    .getConsumerMapStyle()
    .addOnSuccessListener(
        consumerMapStyle -> {
          consumerMapStyle.setPolylineStyleOptions(
              PolylineType.ACTIVE_ROUTE,
              new PolylineOptions()
                  .color(Color.BLUE));
          consumerMapStyle.setPolylineStyleOptions(
              PolylineType.REMAINING_ROUTE,
              new PolylineOptions()
                  .color(Color.BLACK)
                  .width(5)
                  .visible(true));
        });

// Reset polyline options to default values.
consumerMapStyle.setPolylineStyleOptions(PolylineType.ACTIVE_ROUTE, null);
consumerMapStyle.setPolylineStyleOptions(PolylineType.REMAINING_ROUTE, null);

Kotlin

// Initializing polyline options.
consumerController
  .getConsumerMapStyle()
  .addOnSuccessListener({ consumerMapStyle ->
    {
      consumerMapStyle.setPolylineStyleOptions(
        PolylineType.ACTIVE_ROUTE,
        PolylineOptions().color(Color.BLUE)
      )

      consumerMapStyle.setPolylineStyleOptions(
        PolylineType.REMAINING_ROUTE,
        PolylineOptions().color(Color.BLACK).width(5).visible(true)
      )
    }
  })

// Reset polyline options to default values.
consumerMapStyle.setPolylineStyleOptions(PolylineType.ACTIVE_ROUTE, null)

consumerMapStyle.setPolylineStyleOptions(PolylineType.REMAINING_ROUTE, null)

Polylinien mit Verkehrserkennung

Die Verkehrsebene der Polylinie ist standardmäßig deaktiviert. Wenn diese Option aktiviert ist, werden Segmente, die Abschnitte des ungewöhnlichen Verkehrs darstellen, über der Polylinie der Route am Z-Index PolylineOptions.getZIndex() plus einem Versatz je nach Verkehrslage gezeichnet.

Die Verkehrslage wird als einer von vier Geschwindigkeitstypen dargestellt. Sie können die Farbe für jeden Geschwindigkeitstyp anpassen.

Um „Polylinien mit Verkehrserkennung“ zu aktivieren, müssen Sie ein TrafficStyle-Objekt erstellen, das dann durch Aufrufen von setPolylineTrafficStyle() an ConsumerMapStyle übergeben wird.

Beispiel

Java

// TrafficStyle is part of the Consumer SDK.
TrafficStyle trafficStyle = TrafficStyle.builder()
  .setTrafficVisibility(true)
  .setTrafficColor(SpeedType.NO_DATA, Color.GREY)
  .setTrafficColor(SpeedType.NORMAL_VALUE, Color.BLUE)
  .setTrafficColor(SpeedType.SLOW_VALUE, Color.ORANGE)
  .setTrafficColor(SpeedType.TRAFFIC_JAM, Color.RED)
  .build();

consumerMapStyle.setPolylineTrafficStyle(PolylineType.ACTIVE_ROUTE, trafficStyle);

Kotlin

// TrafficStyle is part of the Consumer SDK.
val trafficStyle =
  TrafficStyle.builder()
    .setTrafficVisibility(true)
    .setTrafficColor(SpeedType.NO_DATA, Color.GREY)
    .setTrafficColor(SpeedType.NORMAL_VALUE, Color.BLUE)
    .setTrafficColor(SpeedType.SLOW_VALUE, Color.ORANGE)
    .setTrafficColor(SpeedType.TRAFFIC_JAM, Color.RED)
    .build()

consumerMapStyle.setPolylineTrafficStyle(PolylineType.ACTIVE_ROUTE, trafficStyle)

Kamerazoom wird angepasst, um den Fokus auf eine Fahrt zu lenken

Über die standardmäßige Schaltfläche Mein Standort, die im Maps SDK integriert ist, wird die Kamera auf den Gerätestandort zentriert. Wenn eine aktive Fahrt- und Bestellfortschrittssitzung aktiv ist, kann es sinnvoll sein, die Kamera so zu zentrieren, dass sie sich auf die Fahrt statt auf den Gerätestandort konzentriert.

Integrierte Lösung für das Consumer SDK for Android: AutoCamera

Damit Sie sich auf die Reise statt auf den Gerätestandort konzentrieren können, bietet das Consumer SDK die Funktion „AutoCamera“, die standardmäßig aktiviert ist. Die Kamera zoomt, um die Route für den Fahrt- und Bestellfortschritt und den nächsten Wegpunkt zu fokussieren.

Kameraverhalten anpassen

Wenn Sie das Kameraverhalten genauer steuern möchten, können Sie die automatische Kamera mit ConsumerController.setAutoCameraEnabled() deaktivieren oder aktivieren.

ConsumerController.getCameraUpdate() gibt die derzeit empfohlenen Kameragrenzen zurück. Anschließend können Sie dieses CameraUpdate als Argument für GoogleMap.moveCamera() oder GoogleMap.animateCamera() angeben.