Pianificare un percorso

A volte potresti voler pianificare il percorso fornito dall'app agli utenti. L'utilizzo di un il token di route dell'API Routes (o dell'API Routes Preferred) può aiutarti a specificare due cose per il percorso pianificato:

  • Una polilinea per il percorso.

  • Obiettivi del percorso

Ad esempio, ecco alcuni esempi di obiettivi di routing che potresti avere:

  • Riduci al minimo i tempi di consegna: un'attività che effettua la consegna di cibo potrebbe voler ridurre al minimo il tempo necessario per la consegna. il tempo necessario per consegnare il cibo.

  • Ridurre al minimo i tempi di percorrenza o il consumo di carburante: un'azienda che si occupa di logistica potrebbe volere migliorare l'efficienza dei conducenti e ridurre i costi del carburante.

  • Riduci al minimo il tempo di arrivo: un'operazione di spedizione del servizio potrebbe decidere di Riduci al minimo il tempo necessario per portare gli operatori a una richiesta di job.

  • Riduci i costi e migliora la sicurezza: un'attività di ride sharing potrebbe voler trovare un percorso che costa meno per i passeggeri ed evita determinate aree per la sicurezza motivi.

Per ulteriori informazioni sulla pianificazione di un percorso utilizzando un token di route, consulta Richiedi un token di route.

Perché utilizzare un token di route per gli obiettivi delle route

Con un token di route dell'API Routes o Routes Preferred, disponi di più controllo sul percorso fornito:

  • Pianifica un percorso in anticipo per l'utilizzo dell'SDK di navigazione laddove possibile.

  • Scegli il percorso migliore da utilizzare per l'SDK di navigazione. Se richiedi token di route durante la generazione di route nell'API Routes, ottieni un token di route per ogni route generata. Dopodiché puoi scegliere il token per il percorso che vuoi utilizzare quando lo passi SDK di navigazione.

  • Fai una stima del prezzo in anticipo, comprese le stime di orario di arrivo stimato e la distanza. Sebbene il costo e il tempo effettivi possano variare, questa stima riduce il divario tra il costo del percorso previsto ed effettivo.

  • Specificare obiettivi più avanzati per il percorso, ad esempio il percorso ecologico o il percorso più breve. percorso.

Come funzionano i token di route dell'API Routes

Puoi utilizzare l'API Routes o l'API Routes Preferred per pianificare un percorso utilizzando gli obiettivi del percorso. L'API Routes restituisce un token di routing che puoi passare all'SDK di navigazione per guidarti percorsi il tuo veicolo.

Ecco cosa succede quando richiedi e utilizzi un token di route API Routes:

  1. L'API Routes restituisce un token di route criptato che include la route gli obiettivi delle polilinee e dei percorsi.

  2. Passi il token di route all'SDK di navigazione.

  3. L'SDK di navigazione recupera il percorso oppure, se non è disponibile a causa del mutare delle condizioni, recupera la corrispondenza migliore percorso.

  4. Durante la guida, se il traffico o altre condizioni della strada cambiano o se un veicolo devia dal percorso pianificato, i percorsi modificati continuamente tentare di trovare la migliore route in base agli obiettivi di route nel token.

Questo processo massimizza la vicinanza del percorso effettivo al percorso pianificato.

Perché un percorso pianificato potrebbe non essere seguito esattamente

Pensa al percorso pianificato e agli obiettivi del percorso come linee guida da seguire: non sono prescrittivi. Potresti notare una differenza tra il percorso pianificato e il percorso fornito dalla navigazione guidata a causa di differenze di strada condizioni, la posizione di partenza o altri parametri che sono stati modificati da quando ha creato il percorso pianificato. Questa differenza potrebbe determinare una mancata corrispondenza i tuoi obiettivi pianificati ed effettivi per distanza e orario di arrivo stimato, tra gli altri percorsi importanti qualità del prodotto.

Pianificare un percorso utilizzando un token di route

Puoi pianificare un percorso creando un token di percorso e passandolo a l'SDK di navigazione, come descritto nei passaggi che seguono.

Passaggio 1: crea un token di route utilizzando l'API Routes o Routes Preferred

  1. Richiedi un token di route con uno dei seguenti metodi:

  2. Configura la richiesta di percorso per soddisfare i requisiti per l'utilizzo di un percorso. token:

    • Imposta travel_mode su DRIVING
    • Imposta routing_preference su TRAFFIC_AWARE o TRAFFIC_AWARE_OPTIMAL
    • NON utilizzare Via waypoint

Passaggio 2: passa il token di route all'SDK di navigazione

  1. Memorizza il token di route: imposta una stringa nell'SDK di navigazione. per archiviare il token di route. Ad esempio:

    String routeToken = "route token returned by Routes API";

    Esempio di token di route restituito:

    {
    // Other fields
    "routeToken": "CqMBCjoKCJQOor5DHcwiEhBon3XpHXFnVvDeWMwd9PpAGgz6wtnFDKIBrAHTARpCApUDSggAAAAACjcrP3gBEAQaTApKChgKDQoCCAERAAAAAACAZkAR3SQGgZUXdUASEggAEAMQBhATEBIYAkIEGgIIBSIYChZ2VEJiWlBPSkk1aU5wUVRzNTV5d0FRKAEiFQBcJuds-Efh-2QZhOMTtUCCxEVL_g",
    }
    
  2. Trasmetti il token di route all'SDK di navigazione utilizzando il token Navigator.setDestinations, specificando la stessa destinazione Tappe che hai utilizzato durante la creazione del token di route:

    setDestinations(List destinations, CustomRoutesOptions customRoutesOptions, DisplayOptions displayOptions);

    Ad esempio:

    CustomRoutesOptions customRoutesOptions =
          CustomRoutesOptions.builder()
          .setRouteToken(routeToken)
          .build();

Il metodo Navigator.setDestinations restituisce lo stato della richiesta. Se trova un percorso dalla posizione del veicolo alla destinazione specificata, restituisce RouteStatus.OK.

Per ulteriori informazioni su questo metodo, consulta Navigator.setDestinations

Esempio

Il seguente esempio di codice mostra come specificare un percorso pianificato utilizzando una di routing.

    ArrayList <Waypoint> destinations = Lists.newArrayList();
    Waypoint waypoint1 =
       Waypoint.builder()
          .setLatLng(10, 20)
          .setTitle("title")
          .setVehicleStopover(true)
          .build();
    destinations.add(waypoint1);
    Waypoint waypoint2 =
       Waypoint.builder()
          .setPlaceId("ChIJYV-J-ziuEmsRIMyoFaMedU4")
          .setTitle("title")
          .setVehicleStopover(true)
           .build()
    destinations.add(waypoint2);

    String routeToken = "route token returned by Routes API";

    CustomRoutesOptions customRoutesOptions =
       CustomRoutesOptions.builder()
          .setRouteToken(routeToken)
          .setTravelMode(CustomRoutesOptions.TravelMode.TWO_WHEELER)
          .build();

    // Existing flow to get a Navigator.
    NavigationApi.getNavigator(...);

    // Existing flow for requesting routes.
    ListenableResultFuture<RouteStatus> routeStatusFuture =
        navigator.setDestinations(destinations, customRoutesOptions);

    // Or with display options.
    DisplayOptions displayOptions = new DisplayOptions();

    ListenableResultFuture<RouteStatus> routeStatusFuture =
        navigator.setDestinations(destinations, customRoutesOptions, displayOptions);

Come interagiscono i token di route e l'SDK di navigazione

Ecco come il percorso generato dall'SDK di navigazione e dalla pianificazione route nel token di route interagiscono tra loro:

  • Sostituisce tutte le destinazioni impostate in precedenza.

  • Utilizza il luogo di partenza del veicolo.

  • Si adatta alle condizioni del traffico e della strada. Consulta Perché un percorso pianificato potrebbe non essere seguito esattamente.

  • Ignora se non necessarie le seguenti opzioni relative al routing:

    • avoidsHighways
    • avoidsTolls
    • avoidsFerries
    • licensePlateRestriction
  • Segue:

    • Opzioni correlate ai waypoint, ad esempio la preferenza relativa al lato della strada.

    • Obiettivi del percorso. Se l'SDK di navigazione deve regolare il percorso restituito, utilizza gli obiettivi del percorso specificati richiedendo il token di route. Per questo motivo, devi utilizzare lo stesso le opzioni relative ai waypoint specificate nell'API Routes.