Pianificare un percorso

A volte, potresti voler pianificare il percorso che la tua app fornisce agli utenti. L'utilizzo di un token di percorso dall'API Routes, dall'API Routes Preferred o dall'API Route Optimization può aiutarti a specificare due aspetti del percorso pianificato:

  • Una polilinea per il percorso

  • I tuoi obiettivi di percorso

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

  • Ridurre al minimo il tempo di consegna: un'attività che consegna cibo potrebbe voler ridurre al minimo il tempo necessario per la consegna.

  • Ridurre al minimo il tempo di percorrenza o il consumo di carburante: un'attività di logistica potrebbe voler migliorare l'efficienza dei propri conducenti e ridurre i costi del carburante.

  • Ridurre al minimo il tempo per raggiungere la destinazione: un'operazione di invio di servizi potrebbe voler ridurre al minimo il tempo necessario per far arrivare gli operatori a una richiesta di lavoro.

  • Ridurre i costi e migliorare la sicurezza: un'attività di ride-sharing potrebbe voler trovare un percorso che costi meno per i passeggeri ed evitare determinate aree per motivi di sicurezza.

Per ulteriori informazioni sulla pianificazione di un percorso utilizzando un token di percorso, consulta Richiedere un token di percorso nell' API Routes e Polilinee di transizione e token di percorso nell' API Route Optimization.

Perché utilizzare un token di percorso per gli obiettivi di percorso

Con un token di percorso dall'API Routes, dall'API Routes Preferred o dall'API Route Optimization, hai un maggiore controllo sul percorso fornito:

  • Pianifica un percorso in anticipo per l'SDK Navigation da utilizzare, se possibile.

  • Scegli il percorso migliore da utilizzare per l'SDK Navigation. Se richiedi i token di percorso quando generi i percorsi nell'API Routes, riceverai un token di percorso per ogni percorso generato. Puoi quindi scegliere il token per il percorso che vuoi utilizzare quando lo passi all'SDK Navigation.

  • Stima il prezzo in anticipo, incluse le stime per l'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 e quello effettivo.

  • Specifica obiettivi di percorso più avanzati, come il routing ecologico o il percorso più breve.

Come funzionano i token di percorso

Puoi utilizzare l'API Routes, l'API Routes Preferred o l'API Route Optimization per pianificare un percorso utilizzando gli obiettivi di percorso. Puoi passare un token di percorso restituito da una di queste API all'SDK Navigation per guidare il routing del veicolo.

Ecco cosa succede quando richiedi e utilizzi un token di percorso:

  1. L'API Routes, l'API Routes Preferred o l'API Route Optimization restituisce un token di percorso criptato che include la polilinea del percorso e gli obiettivi del percorso.

  2. Passa il token di percorso all'SDK Navigation.

  3. L'SDK Navigation recupera il percorso o, se il percorso non è disponibile a causa delle condizioni in continua evoluzione, recupera il percorso più corrispondente.

  4. Durante la guida sul percorso, se il traffico o altre condizioni stradali cambiano o se un veicolo si discosta dal percorso pianificato, i percorsi modificati tentano continuamente di trovare il percorso migliore in base agli obiettivi del percorso nel token.

Questa procedura massimizza la vicinanza del percorso effettivo al percorso pianificato.

Perché un percorso pianificato potrebbe non essere seguito esattamente

Considera il percorso pianificato e gli 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 nelle condizioni stradali, nella posizione di partenza o in altri parametri che sono cambiati da quando hai creato il percorso pianificato. Questa differenza potrebbe comportare una mancata corrispondenza tra gli obiettivi pianificati ed effettivi per la distanza e l'orario di arrivo stimato, tra le altre importanti qualità del viaggio.

Pianificare un percorso utilizzando un token di percorso

Puoi pianificare un percorso creando un token di percorso e passandolo all'SDK Navigation, come descritto nei seguenti passaggi:

Passaggio 1: crea un token di percorso utilizzando l'API Routes, l'API Routes Preferred o l'API Route Optimization

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

  2. Configura la richiesta dell'API Routes o dell'API Routes Preferred in modo che soddisfi i requisiti per l'utilizzo di un token di percorso:

    • Imposta travel_mode su DRIVE o TWO_WHEELER
    • Imposta routing_preference su TRAFFIC_AWARE o TRAFFIC_AWARE_OPTIMAL
    • NON utilizzare le tappe Via

Passaggio 2: passa il token di percorso all'SDK Navigation

  1. Memorizza il token di percorso: nell'SDK Navigation, configura una stringa per memorizzare il token di percorso. Ad esempio:

    let routeToken = "route token returned by Routes API"
    

    Esempio di token di percorso restituito:

    {
    // Other fields
    "routeToken": "CqMBCjoKCJQOor5DHcwiEhBon3XpHXFnVvDeWMwd9PpAGgz6wtnFDKIBrAHTARpCApUDSggAAAAACjcrP3gBEAQaTApKChgKDQoCCAERAAAAAACAZkAR3SQGgZUXdUASEggAEAMQBhATEBIYAkIEGgIIBSIYChZ2VEJiWlBPSkk1aU5wUVRzNTV5d0FRKAEiFQBcJuds-Efh-2QZhOMTtUCCxEVL_g",
    }
    
  2. Passa il token di percorso all'SDK Navigation utilizzando il metodo mapView.navigator setDestinations, specificando le stesse tappe di destinazione utilizzate durante la creazione del token di percorso:

    mapView.navigator?.continueToNextDestination([waypoint1, waypoint2], routeToken: routeToken, callback: {...})
    

    Il metodo Navigator.continueToNextDestination restituisce lo stato della richiesta. Se viene trovato un percorso dalla posizione dell'utente alla destinazione indicata, viene restituito RouteStatus.OK.

Scenari con più fermate

Puoi configurare un massimo di 25 tappe.

Il metodo setDestinations non supporta i viaggi con più fermate. Utilizza continueToNextDestination() per avanzare la tappa alla tappa successiva del viaggio.

Esempio

I seguenti esempi di codice mostrano come recuperare un percorso pianificato.

Swift

let location = CLLocationCoordinate2D(latitude: 47.67, longitude: -122.20)
let waypoint1 = GMSNavigationWaypoint(location: location, title: "waypoint from location")!
let waypoint2 = GMSNavigationWaypoint(placeID: "samplePlaceID", title: "waypoint from Place ID")!

let routeToken = "route token returned by Routes API"
mapView.navigator?.setDestinations([waypoint1, waypoint2], routeToken: routeToken, callback: {...})

Objective-C

CLLocationCoordinate2D location = CLLocationCoordinate2DMake(47.67, -122.20);
GMSNavigationWaypoint *waypoint1 = [[GMSNavigationWaypoint alloc] initWithLocation:coordinate title:@"waypoint from location"];
GMSNavigationWaypoint *waypoint2 = [[GMSNavigationWaypoint alloc] initWithPlaceID:@"samplePlaceID"
                                                                            title:@"waypoint from Place ID"];
NSString *routeToken = @"route token returned by Routes API";

[mapView.navigator continueToNextDestination:@[waypoint1, waypoint2]
                         routeToken:routeToken
                           callback:^(GMSRouteStatus routeStatus){...}];

Come interagiscono i token di percorso e l'SDK Navigation

Ecco come interagiscono il percorso generato dall'SDK Navigation e il percorso pianificato nel token di percorso:

  • Esegue l'override di tutte le destinazioni impostate in precedenza.

  • Utilizza la posizione di partenza del veicolo.

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

  • Ignora le seguenti opzioni relative al routing in quanto non necessarie:

    • avoidsHighways
    • avoidsTolls
    • avoidsFerries
    • licensePlateRestriction
  • Segue:

    • Opzioni relative alle tappe, come la preferenza per il lato della strada.

    • Obiettivi del percorso. Se l'SDK Navigation deve modificare il percorso restituito, utilizza gli obiettivi del percorso specificati durante la richiesta del token di percorso. Per questo motivo, devi utilizzare le stesse opzioni relative alle tappe specificate nell'API Routes.