Pianificare un percorso

A volte, potresti voler pianificare il percorso che l'app fornisce ai conducenti. L'utilizzo di un token di percorso dall'API Routes (o dall'API Routes Preferred) può aiutarti a specificare due cose per la tua route pianificata:

  • Una polilinea per il percorso

  • Obiettivi del percorso

Ad esempio, di seguito sono riportati alcuni esempi di obiettivi di routing che potresti avere:

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

  • Riduci 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.

  • Riduci al minimo il tempo alla destinazione: un'operazione di invio di un servizio potrebbe voler ridurre al minimo il tempo necessario per far arrivare gli operatori a una richiesta di job.

  • Riduzione dei costi e maggiore sicurezza: un'attività di ride sharing potrebbe voler trovare un percorso che costi meno per i passeggeri ed evita determinate aree per motivi di sicurezza.

Per maggiori informazioni sulla pianificazione di una route utilizzando un token di route, consulta Richiedere un token di route.

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

Con un token di route dall'API Routes Preferred, hai un maggiore controllo sulla route fornita:

  • Pianifica in anticipo un percorso affinché l'SDK di navigazione possa utilizzarlo, se possibile.

  • Scegli il percorso migliore da utilizzare con l'SDK di navigazione. Se richiedi token di route quando generi route nell'API Routes, ricevi un token di route per ogni route generata. Puoi quindi scegliere il token per la route da utilizzare quando lo passi all'SDK Navigazione.

  • Stima il prezzo in anticipo, incluse le stime per l'orario di arrivo stimato e la distanza. Anche se i tempi e i costi effettivi possono variare, questa stima riduce il divario tra il costo previsto e quello effettivo del percorso.

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

Come funzionano i token di route dell'API Routes

Puoi usare l'API Routes o l'API Routes Preferred per pianificare una route utilizzando gli obiettivi delle route. L'API Routes restituisce un token di percorso che puoi passare all'SDK di navigazione per indicare il percorso del veicolo.

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

  1. L'API Routes restituisce un token di route criptato che include la polilinea e gli obiettivi della route.

  2. Passi il token del percorso all'SDK di navigazione.

  3. L'SDK di navigazione recupera la route oppure, se non è disponibile a causa delle condizioni mutevoli, recupera la route corrispondente migliore.

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

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

Perché un percorso pianificato potrebbe non essere seguito esattamente

Pensa agli obiettivi di percorso e percorso che hai pianificato come linee guida da seguire: non sono prescrittivi. Potresti notare una differenza tra il percorso pianificato e quello fornito dalla navigazione guidata a causa di differenze nelle condizioni della strada, nel punto di partenza o in altri parametri che sono cambiati dopo la creazione del percorso pianificato. Questa differenza potrebbe determinare una mancata corrispondenza tra gli obiettivi pianificati e quelli effettivi per quanto riguarda la distanza e l'orario di arrivo stimato, tra le altre qualità di viaggio importanti.

Pianificare una route utilizzando un token di route

Puoi pianificare una route creando un token di route e passandolo all'SDK di navigazione, come descritto nei seguenti passaggi:

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 route in modo da soddisfare i requisiti per l'utilizzo di un token di route:

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

Passaggio 2: passa il token del percorso all'SDK di navigazione

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

    let routeToken = "route token returned by Routes API"

    Esempio di token di route restituito:

    {
    // Other fields
    "routeToken": "CqMBCjoKCJQOor5DHcwiEhBon3XpHXFnVvDeWMwd9PpAGgz6wtnFDKIBrAHTARpCApUDSggAAAAACjcrP3gBEAQaTApKChgKDQoCCAERAAAAAACAZkAR3SQGgZUXdUASEggAEAMQBhATEBIYAkIEGgIIBSIYChZ2VEJiWlBPSkk1aU5wUVRzNTV5d0FRKAEiFQBcJuds-Efh-2QZhOMTtUCCxEVL_g",
    }
    
  2. Passa il token di route all'SDK di navigazione utilizzando il metodo mapView.navigator setDestinations, specificando gli stessi waypoint di destinazione utilizzati durante la creazione del token di route:

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

Il metodo Navigator.setDestinations restituisce lo stato della richiesta. Se viene trovata una route dalla posizione dell'utente alla destinazione specificata, viene restituito RouteStatus.OK.

Per ulteriori informazioni su questo metodo, consulta Navigator.setDestinations.

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 setDestinations:@[waypoint1, waypoint2]
                         routeToken:routeToken
                           callback:^(GMSRouteStatus routeStatus){...}];

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

Ecco come interagiscono la route generata dall'SDK di navigazione e quella pianificata nel token di route:

  • Sostituisce tutte le destinazioni impostate in precedenza.

  • Utilizza la posizione di partenza del veicolo.

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

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

    • avoidsHighways
    • avoidsTolls
    • avoidsFerries
    • licensePlateRestriction
  • Segue:

    • Opzioni correlate ai punti di percorso, ad esempio la preferenza relativa al lato della strada.

    • Obiettivi del percorso: Se l'SDK di navigazione deve modificare la route restituita, utilizza gli obiettivi di route specificati al momento della richiesta del token di route. Per questo motivo, devi utilizzare le stesse opzioni relative ai waypoint che hai specificato nell'API Routes.