Personalizzazione dell'interfaccia utente di Android

La classe ConsumerMapStyle include metodi setter e getter che offrono una personalizzazione dinamica per indicatori e polilinee. Questa classe viene esposta in modo asincrono utilizzando il metodo ConsumerController.getConsumerMapStyle().

La personalizzazione dell'interfaccia utente viene applicata a tutte le rotazioni dei dispositivi e rimane attiva fino a quando ConsumerController non viene scollegato.

Indicatori personalizzati

Il metodo per impostare il tipo di indicatore e le sue proprietà è ConsumerMapStyle.setMarkerStyleOptions(). Le opzioni degli indicatori personalizzati sostituiscono i valori predefiniti forniti dall'SDK consumer. Per ripristinare i valori predefiniti, chiama setMarkerStyleOptions() utilizzando null per il parametro MarkerOptions. Recupera i MarkerOptions attivi utilizzando getMarkerStyleOptions().

Tipi di indicatori

I seguenti indicatori sono disponibili per la personalizzazione:

  • TRIP_PICKUP_POINT
  • TRIP_DROPOFF_POINT
  • TRIP_INTERMEDIATE_DESTINATION
  • TRIP_VEHICLE

Display di TRIP_PICKUP_POINT e TRIP_DROPOFF_POINT durante il monitoraggio della corsa.

Display di TRIP_VEHICLE durante il monitoraggio della corsa. L'icona dell'indicatore non cambia in base al tipo di veicolo effettivo per la corsa. L'SDK per i consumatori aggiorna la rotazione dell'icona TRIP_VEHICLE durante il monitoraggio del viaggio per simulare il comportamento del veicolo effettivo mentre percorre il percorso.

Opzioni indicatore

Le proprietà personalizzabili disponibili per ogni indicatore sono l'insieme di proprietà fornite da Google Maps MarkerOptions.

MarkerOptions viene creato usando il suo costruttore e le proprietà personalizzate vengono specificate usando i metodi di stile "Setter". Per ogni proprietà vengono forniti valori predefiniti, quindi devi solo specificare valori personalizzati.

Puoi disattivare un indicatore impostando visible su false. È necessario fornire dati sufficienti per consentirti di utilizzare al suo posto il tuo elemento UI.

Esempio

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)

Polilinee personalizzate

La personalizzazione della polilinea viene impostata utilizzando il metodo ConsumerMapStyle.setPolylineStyleOptions. L'impostazione di opzioni personalizzate per la polilinea esegue l'override dei valori predefiniti forniti dall'SDK consumer. I valori predefiniti possono essere ripristinati chiamando setPolylineStyleOptions con null per il parametro PolylineOptions. Il valore PolylineOptions attivo può essere recuperato utilizzando il metodo getPolylineStyleOptions.

Tipi di polilinea

Sono disponibili per la personalizzazione i seguenti tipi di polilinee:

  • ACTIVE_ROUTE
  • REMAINING_ROUTE

ACTIVE_ROUTE e REMAINING_ROUTE vengono visualizzati durante il monitoraggio della corsa e rappresentano il percorso del veicolo.

Proprietà polilinea

Le proprietà personalizzabili disponibili per ogni polilinea sono fornite da Google Maps PolylineOptions. PolylineOptions viene creato usando il suo costruttore e le proprietà personalizzate vengono specificate usando i metodi di stile "Setter". Per ogni proprietà vengono forniti valori predefiniti, quindi devi solo specificare valori personalizzati. Puoi disattivare la polilinea impostando visible su false.

Esempio

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)

Percorso attivo e rimanente

Se le funzionalità Trip and Order Progress sono abilitate, la tua app può personalizzare l'esperienza dell'utente utilizzando le polilinee che mostrano i veicoli attivi e il percorso rimanente.

Il percorso attivo è il percorso che il veicolo sta attualmente per raggiungere il waypoint successivo nella corsa attiva del consumatore. Il percorso rimanente è quello che il veicolo supererà il percorso attivo. Se il waypoint del percorso attivo è l'ultimo waypoint del percorso, il percorso rimanente non esiste.

Le polilinee attive e rimanenti possono essere personalizzate e la visibilità può essere controllata dalla tua app. Per impostazione predefinita, la route attiva è visibile, mentre quella rimanente non è visibile.

Esempio

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)

Polilinee sensibili al traffico

Il livello di traffico della polilinea è disattivato per impostazione predefinita. Quando è abilitata, i segmenti che rappresentano tratti di traffico non normale vengono tracciati sopra la polilinea del percorso in z-index PolylineOptions.getZIndex() più un offset in base alle condizioni del traffico.

Le condizioni del traffico sono rappresentate da uno dei quattro tipi di velocità. Puoi personalizzare il colore per ogni tipo di velocità.

Per abilitare le "polilinee sensibili al traffico", devi creare un oggetto TrafficStyle che verrà passato a ConsumerMapStyle chiamando setPolylineTrafficStyle().

Esempio

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)

Regolare lo zoom della fotocamera per mettere a fuoco un viaggio

Il pulsante La mia posizione predefinito in Maps SDK centra la fotocamera sulla posizione del dispositivo. Se è attiva una sessione Viaggio e stato dell'ordine, puoi centrare la videocamera in modo che si concentri sul percorso anziché sulla posizione del dispositivo.

SDK consumer per soluzione integrata per Android: AutoFotocamera

Per consentirti di concentrarti sul percorso anziché sulla posizione del dispositivo, l'SDK per i consumatori fornisce una funzionalità AutoFotocamera abilitata per impostazione predefinita. La fotocamera aumenta lo zoom per mettere a fuoco il percorso Viaggio e ordine e il waypoint successivo della corsa.

Personalizzazione del comportamento della videocamera

Se hai bisogno di un maggiore controllo sul comportamento della videocamera, puoi disattivare o attivare AutoFotocamera utilizzando ConsumerController.setAutoCameraEnabled().

ConsumerController.getCameraUpdate() restituisce i limiti della fotocamera consigliati in quel momento. Puoi quindi fornire questo CameraUpdate come argomento a GoogleMap.moveCamera() o GoogleMap.animateCamera().