Panoramica
Per calcolare le indicazioni stradali puoi usare diversi metodi
di trasporto pubblico) utilizzando DirectionsService
. Questo oggetto comunica con le indicazioni stradali dell'API di Google Maps
Servizio che riceve richieste di direzione e restituisce un percorso efficiente.
Il tempo di percorrenza è il fattore principale dell'ottimizzazione, ma ci sono anche altri fattori
come distanza, numero di svolte e molte altre.
Puoi gestire personalmente le indicazioni stradali o utilizzare
DirectionsRenderer
oggetto per il rendering
che consentono di analizzare i dati
e visualizzare i risultati.
Quando specifichi l'origine o la destinazione in una richiesta di indicazioni stradali,
puoi specificare una stringa di query (ad esempio, "Chicago, IL" o
"Darwin, NSW, Australia"), un valore LatLng
o un
Posiziona l'oggetto.
Il servizio Indicazioni stradali può restituire indicazioni stradali con più parti utilizzando una serie
di tappe. Le direzioni vengono visualizzate come disegno di una polilinea
il percorso su una mappa o anche come serie di testi
descrizione all'interno di un elemento <div>
(ad esempio,
"Svolta a destra allo svincolo del ponte di Williamsburg").
Per iniziare
Prima di utilizzare il servizio Indicazioni stradali nell'API Maps JavaScript, assicurati che l'API Directions sia abilitata nella console Google Cloud, configurato per l'API Maps JavaScript.
Per visualizzare l'elenco delle API abilitate:
- Vai alla sezione console Google Cloud.
- Fai clic sul pulsante Seleziona un progetto. quindi seleziona lo stesso progetto API Maps JavaScript e fai clic su Apri.
- Nell'elenco delle API sulla Dashboard, cerca API Directions.
- Se vedi l'API nell'elenco, non devi eseguire altre operazioni. Se l'API non è elencata,
abilitala:
- .
- Nella parte superiore della pagina, seleziona ABILITA API per visualizzare lo stato Scheda Raccolta. In alternativa, dal menu laterale a sinistra, Seleziona Libreria.
- Cerca l'API Directions e selezionala dalla dei risultati di ricerca.
- Seleziona ABILITA. Al termine del processo, L'API Directions viene visualizzata nell'elenco delle API nella Dashboard.
Prezzi e norme
Prezzi
Dal 16 luglio 2018 è entrato in vigore un nuovo piano tariffario con pagamento a consumo per Maps, Routes e Places. Per scoprire di più sui nuovi prezzi e l'utilizzo del servizio Indicazioni stradali JavaScript, consulta Utilizzo e fatturazione per l'API Directions.
Norme
L'utilizzo del servizio Directions deve essere conforme alle norme descritte per l'API Directions.
Richieste di indicazioni stradali
L'accesso al servizio Indicazioni stradali è asincrono, poiché
l'API di Google Maps deve effettuare una chiamata a un
o server web. Per questo motivo, devi trasmettere un callback
da eseguire al completamento della richiesta. Questo
deve elaborare i risultati. Tieni presente che
Il servizio di indicazioni stradali potrebbe restituire più di un itinerario possibile
come un array di elementi routes[]
separati.
Per utilizzare le indicazioni stradali nell'API Maps JavaScript, crea un oggetto
digita DirectionsService
e chiama
DirectionsService.route()
per avviare una richiesta
al servizio Directions, passandogli una
DirectionsRequest
oggetto letterale
contenente i termini di input e un metodo di callback per eseguire
al ricevimento della risposta.
Il valore letterale dell'oggetto DirectionsRequest
contiene il valore
seguenti campi:
{ origin: LatLng | String | google.maps.Place, destination: LatLng | String | google.maps.Place, travelMode: TravelMode, transitOptions: TransitOptions, drivingOptions: DrivingOptions, unitSystem: UnitSystem, waypoints[]: DirectionsWaypoint, optimizeWaypoints: Boolean, provideRouteAlternatives: Boolean, avoidFerries: Boolean, avoidHighways: Boolean, avoidTolls: Boolean, region: String }
Questi campi sono descritti di seguito:
origin
(obbligatorio) specifica la posizione di partenza da per il calcolo delle indicazioni stradali. Questo valore può essere specificato comeString
(ad es. "Chicago, IL"), comeLatLng
o come oggetto Posiziona. Se utilizzi un Posiziona, puoi specificare un place ID, una stringa di query o unLatLng
posizione. Puoi recuperare gli ID luogo da Geocoding, Place Search and Place Autocomplete in API Maps JavaScript. Ad esempio, utilizzo degli ID luogo di Place Completamento automatico; consulta Luogo Completamento automatico e indicazioni stradali.destination
(obbligatorio) specifica la posizione finale verso cui calcolare le indicazioni stradali. Le opzioni sono le stesse utilizzate per Campoorigin
descritto sopra.travelMode
(obbligatorio) specifica cosa mezzo di trasporto da utilizzare per il calcolo delle indicazioni stradali. Valido i valori sono specificati in Modalità di viaggio di seguito.transitOptions
(facoltativo) specifica valori applicabili solo alle richieste in cuitravelMode
èTRANSIT
. I valori validi sono descritti in Opzioni di trasporto pubblico di seguito.drivingOptions
(facoltativo) specifica valori applicabili solo alle richieste in cuitravelMode
èDRIVING
. I valori validi sono descritti in Opzioni di guida di seguito.unitSystem
(facoltativo) specifica cosa di unità di misura da utilizzare per la visualizzazione dei risultati. I valori validi sono specificati in Sistemi di unità di seguito.waypoints[]
(facoltativo) specifica un array diDirectionsWaypoint
. Alterazione dei waypoint un percorso instradandolo attraverso le località specificate. Una tappa viene specificata come oggetto letterale con campi come mostrato di seguito:location
specifica la posizione tappa, comeLatLng
, come Posiziona un oggetto o come oggettoString
che verrà geocodificato.stopover
è un valore booleano che indica che la tappa è una fermata lungo il percorso, che ha le l'effetto della suddivisione del percorso in due percorsi.
Per ulteriori informazioni sui waypoint, consulta l'articolo sull'utilizzo i waypoint in Route qui sotto.
optimizeWaypoints
(facoltativo) specifica che il percorso che utilizzawaypoints
fornito può essere ottimizzate riorganizzando i waypoint in un ordine più efficiente. Setrue
, il servizio Indicazioni stradali restituirà ilwaypoints
riordinato in un campowaypoint_order
. Per saperne di più per ulteriori informazioni, consulta la sezione Utilizzo dei waypoint nelle route. below.)provideRouteAlternatives
(facoltativo) se impostato intrue
specifica che il servizio Indicazioni stradali può fornire più alternative di routing nella risposta. Tieni presente che fornire alternative di routing può aumentare il tempo di risposta da il server. Questa opzione è disponibile solo per le richieste senza tappe intermedie.avoidFerries
(facoltativo) se impostato sutrue
indica che le route calcolate devono evitare i traghetti, se possibile.avoidHighways
(facoltativo) se impostato sutrue
indica che le route calcolate devono se possibile, evita le autostrade principali.avoidTolls
(facoltativo) se impostato sutrue
indica che le route calcolate devono se possibile, evita le strade a pedaggio.region
(facoltativo) specifica la il codice regione, specificato come ccTLD ("dominio di primo livello") a due caratteri. (Per ulteriori informazioni, vedi Differenziazione per regione riportata di seguito.)
Di seguito è riportato un esempio di DirectionsRequest
:
{ origin: 'Chicago, IL', destination: 'Los Angeles, CA', waypoints: [ { location: 'Joplin, MO', stopover: false },{ location: 'Oklahoma City, OK', stopover: true }], provideRouteAlternatives: false, travelMode: 'DRIVING', drivingOptions: { departureTime: new Date(/* now, or future date */), trafficModel: 'pessimistic' }, unitSystem: google.maps.UnitSystem.IMPERIAL }
Modalità di viaggio
Quando calcoli le indicazioni stradali, devi specificare quale modalità di trasporto utilizzare. Il seguente viaggio sono attualmente supportate:
DRIVING
(valore predefinito) indica le indicazioni stradali standard utilizzando la rete stradale.BICYCLING
richiede di andare in bicicletta indicazioni stradali per biciclette strade preferite.TRANSIT
richiede indicazioni stradali tramite percorsi dei trasporti pubblici.WALKING
richiede indicazioni a piedi tramite percorsi pedonali e marciapiedi.
Consulta i dettagli sulla copertura di Google Maps Platform
per stabilire in che misura un paese supporta le indicazioni stradali. Se richiedi
le indicazioni stradali per una regione in cui quel tipo di direzione non è disponibile,
la risposta restituirà
DirectionsStatus
="ZERO_RESULTS
".
Nota: le indicazioni a piedi potrebbero non includere informazioni chiare
percorsi pedonali, quindi le indicazioni a piedi restituiranno avvisi nel
DirectionsResult
. Questi avvisi devono essere mostrati sempre
utente. Se non usi il valore predefinito DirectionsRenderer
,
è responsabile della visualizzazione degli avvisi.
Opzioni di trasporto pubblico
Le opzioni disponibili per una richiesta di indicazioni stradali variano in base alla modalità di viaggio.
Quando richiedi indicazioni per il trasporto pubblico, avoidHighways
,
avoidTolls
, waypoints[]
e
Le opzioni optimizeWaypoints
verranno ignorate. Puoi specificare
opzioni di percorso specifiche per il trasporto pubblico
TransitOptions
oggetto letterale.
Le indicazioni stradali con il trasporto pubblico fanno riferimento al tempo. Le indicazioni stradali verranno restituite solo per in futuro.
Il valore letterale dell'oggetto TransitOptions
contiene quanto segue
campi:
{ arrivalTime: Date, departureTime: Date, modes[]: TransitMode, routingPreference: TransitRoutePreference }
Questi campi sono descritti di seguito:
arrivalTime
(facoltativo) specifica la classe ora di arrivo come oggettoDate
. Se l'ora di arrivo è specificato, l'ora di partenza viene ignorata.departureTime
(facoltativo) specifica la classe orario di partenza come oggettoDate
. LadepartureTime
verrà ignorato searrivalTime
è specificato. Il valore predefinito è ora (ora corrente), se non è presente alcun valore specificato perdepartureTime
oarrivalTime
.modes[]
(facoltativo) è un array contenente uno o altri valori letterali oggettoTransitMode
. Questo campo può essere se la richiesta include una chiave API. OgniTransitMode
specifica una modalità di transito preferita. Sono consentiti i seguenti valori:BUS
indica che nell'itinerario calcolato dovrebbe preferire i viaggi in autobus.RAIL
indica che calcolo dell'itinerario dovrebbe preferire i viaggi in treno, tram, metropolitana leggera e metropolitana.SUBWAY
indica che per il percorso calcolato dovrebbe preferire i viaggi in metropolitana.TRAIN
indica che per il percorso calcolato dovrebbe preferire i viaggi in treno.TRAM
indica che percorso calcolato predilige i tram e la metropolitana leggera.
routingPreference
(facoltativo) specifica le preferenze per i percorsi con il trasporto pubblico. Utilizzando questa opzione, puoi differenziare le opzioni restituite, anziché accettare il percorso migliore predefinito scelto dall'API. Questo campo può essere specificato solo se la richiesta include un chiave API. Sono consentiti i seguenti valori:FEWER_TRANSFERS
indica che il percorso calcolato deve preferire un numero limitato di trasferimenti.LESS_WALKING
indica che il percorso calcolato dovrebbe preferire una quantità limitata di camminando.
Di seguito è riportato un esempio di DirectionsRequest
per il trasporto pubblico:
{ origin: 'Hoboken NJ', destination: 'Carroll Gardens, Brooklyn', travelMode: 'TRANSIT', transitOptions: { departureTime: new Date(1337675679473), modes: ['BUS'], routingPreference: 'FEWER_TRANSFERS' }, unitSystem: google.maps.UnitSystem.IMPERIAL }
Opzioni di guida
Puoi specificare le opzioni di routing per le indicazioni stradali tramite la
DrivingOptions
.
L'oggetto DrivingOptions
contiene i seguenti campi:
{ departureTime: Date, trafficModel: TrafficModel }
Questi campi sono descritti di seguito:
departureTime
(obbligatorio perdrivingOptions
oggetto letterale da essere valido) specifica la orario di partenza desiderato come oggettoDate
. Il valore deve essere impostata sull'ora attuale o su un orario futuro. Non può essere nel in passato. L'API converte tutte le date in UTC per garantire una gestione coerente tra fusi orari diversi). Per i clienti del piano Google Maps Platform Premium, se includidepartureTime
nella richiesta, l'API restituisce il percorso migliore in base alle condizioni del traffico previste in quel momento e include il tempo previsto nel traffico (duration_in_traffic
) nella risposta. Se non specifichi un orario di partenza (ossia, se la richiesta non includedrivingOptions
), il percorso restituito è un percorso generalmente buono senza tenere conto delle condizioni del traffico.trafficModel
(facoltativo) specifica i presupposti per da utilizzare per calcolare il tempo nel traffico. Questa impostazione influisce sul valore nel campoduration_in_traffic
della risposta, che contiene il tempo previsto nel traffico in base alle medie storiche. Il valore predefinito èbestguess
. Sono consentiti i seguenti valori:bestguess
(predefinito) indica che l'oggetto restituitoduration_in_traffic
dovrebbe essere la stima migliore del viaggio in base a ciò che è noto sulle condizioni storiche del traffico e traffico in tempo reale. Il traffico in tempo reale diventa più importante più si avvicinadepartureTime
è fino a ora.pessimistic
indica che l'oggetto restituitoduration_in_traffic
deve essere più lungo del viaggio effettivo tempo nella maggior parte dei giorni, anche se occasionalmente i giorni con traffico particolarmente intenso possono superare questo valore.optimistic
indica che l'oggetto restituitoduration_in_traffic
deve essere più breve del valore effettivo tempo di percorrenza quasi tutti i giorni, anche se occasionalmente i giorni in cui si registrano condizioni del traffico possono essere più veloci di questo valore.
Di seguito è riportato un esempio di DirectionsRequest
per le indicazioni stradali:
{ origin: 'Chicago, IL', destination: 'Los Angeles, CA', travelMode: 'DRIVING', drivingOptions: { departureTime: new Date(Date.now() + N), // for the time N milliseconds from now. trafficModel: 'optimistic' } }
Sistemi unitari
Per impostazione predefinita, le indicazioni stradali vengono calcolate e visualizzate utilizzando
il sistema unitario del paese o della regione dell'origine.
(Nota: le origini espresse utilizzando
coordinate di latitudine/longitudine anziché indirizzi sempre predefiniti
alle unità metriche). Ad esempio, una route da
"Milano, Italia" a "Toronto, ONT" mostrerà i risultati in miglia, mentre
il percorso inverso mostrerà i risultati in chilometri. Tu
può sostituire questo sistema di unità impostandone una in modo esplicito all'interno
tramite uno dei seguenti UnitSystem
valori:
UnitSystem.METRIC
specifica all'utilizzo del sistema metrico. Le distanze vengono indicate utilizzando i chilometri.UnitSystem.IMPERIAL
specifica l'utilizzo del modello (inglese). Le distanze vengono indicate utilizzando le miglia.
Nota: questa impostazione di sistema è disponibile solo per influisce sul testo mostrato all'utente. Il risultato delle indicazioni stradali contiene valori di distanza, non mostrati all'utente, che sono sempre espressa in metri.
Differenziazione regionale per le indicazioni stradali
Il servizio Indicazioni stradali dell'API di Google Maps restituisce i risultati degli indirizzi influenzati
dal dominio (regione o paese) da cui hai caricato JavaScript
bootstrap. (poiché la maggior parte degli utenti carica https://maps.googleapis.com/
Imposta il dominio implicito sugli Stati Uniti. Se carichi
bootstrap da un altro dominio supportato, riceverai risultati
influenzati da quel dominio. Ad esempio, cerca "Milano" maggio
restituire risultati diversi dal caricamento delle applicazioni
https://maps.googleapis.com/
(Stati Uniti) di uno
caricamento di http://maps.google.es/
(Spagna).
Puoi anche impostare il servizio Indicazioni stradali in modo che restituiscano risultati parziali in base a
regione specifica usando il parametro region
. Questo parametro
prende un codice regione, specificato come Unicode a due caratteri (non numerici)
della regione. Nella maggior parte dei casi, questi tag sono mappati direttamente al ccTLD ("top-level")
dominio") valori a due caratteri come "uk" in "co.uk" ad esempio. In alcuni
in questo caso, il tag region
supporta anche i codici ISO-3166-1,
talvolta differiscono dai valori ccTLD ("GB" per "Gran Bretagna", ad esempio).
Quando utilizzi il parametro region
:
- Specifica un solo paese o una sola regione. Vengono ignorati più valori e potrebbe tradursi in una richiesta non andata a buon fine.
- Utilizza solo sottotag di regione a due caratteri (formato Unicode CLDR). Tutti gli altri comporteranno errori.
La differenziazione per regione è supportata solo per i paesi e le regioni che supportano indicazioni stradali. Consulta i dettagli sulla copertura di Google Maps Platform per visualizzare la copertura internazionale dell'API Directions.
Istruzioni di rendering
L'avvio di una richiesta di indicazioni stradali al
DirectionsService
con il metodo route()
richiede il passaggio di un callback che viene eseguito al completamento
richiesta di servizio. Questo callback restituirà un
DirectionsResult
e DirectionsStatus
il codice nella risposta.
Stato query Indicazioni stradali
DirectionsStatus
può restituire i seguenti valori:
OK
indica che la risposta contiene unDirectionsResult
valido.NOT_FOUND
indica almeno uno degli alle località specificate nell'origine, nella destinazione o Impossibile geocodificare le tappe.ZERO_RESULTS
indica che non è stato trovato alcun percorso tra il luogo di partenza e quello di destinazione.MAX_WAYPOINTS_EXCEEDED
indica anche questo sono stati forniti molti campiDirectionsWaypoint
inDirectionsRequest
. Consulta la sezione di seguito limiti per le tappe.MAX_ROUTE_LENGTH_EXCEEDED
indica il percorso richiesto è troppo lungo e non può essere elaborato. Questo errore si verifica quando vengono restituite le indicazioni stradali. Prova a ridurre il numero di tappe, svolte o istruzioni.INVALID_REQUEST
indica che il valoreDirectionsRequest
specificato non è valido. Le più comuni le cause di questo codice di errore sono le richieste in cui manca un luogo di partenza o di arrivo oppure una richiesta di trasporto pubblico che includa tappe.OVER_QUERY_LIMIT
indica che la pagina web ha ha inviato troppe richieste nel periodo di tempo consentito.REQUEST_DENIED
indica che la pagina web è non possono utilizzare il servizio di indicazioni stradali.UNKNOWN_ERROR
indica una richiesta di indicazioni stradali non è stato elaborato a causa di un errore del server. La richiesta può riuscire se riprovi.
Devi assicurarti che la query sulle indicazioni stradali abbia restituito i risultati controllando questo valore prima di elaborare il risultato.
Visualizzazione di DirectionsResult
DirectionsResult
contiene il risultato dell'oggetto
la query relativa alle indicazioni stradali, che puoi gestire autonomamente o
a un oggetto DirectionsRenderer
, che può
gestire automaticamente la visualizzazione del risultato su una mappa.
Per visualizzare un DirectionsResult
tramite un
DirectionsRenderer
, devi eseguire l'operazione
seguenti:
- Crea un oggetto
DirectionsRenderer
. - Chiama
setMap()
sul renderer da associare alla mappa passata. - Richiama
setDirections()
sul renderer, passandoDirectionsResult
come indicato in alto. Poiché il renderer è unMVCObject
, Rileverà automaticamente qualsiasi modifica alle sue proprietà e aggiorna la mappa quando le relative indicazioni stradali sono è cambiato.
L'esempio seguente calcola le indicazioni stradali tra
due località sulla Route 66, dove i dati di partenza e di destinazione
sono impostate dai valori "start"
e "end"
specificati
disponibili negli elenchi a discesa. DirectionsRenderer
gestisce la visualizzazione della polilinea tra
luoghi e la posizione degli indicatori nell'origine,
destinazione ed eventuali tappe, se applicabili.
function initMap() { var directionsService = new google.maps.DirectionsService(); var directionsRenderer = new google.maps.DirectionsRenderer(); var chicago = new google.maps.LatLng(41.850033, -87.6500523); var mapOptions = { zoom:7, center: chicago } var map = new google.maps.Map(document.getElementById('map'), mapOptions); directionsRenderer.setMap(map); } function calcRoute() { var start = document.getElementById('start').value; var end = document.getElementById('end').value; var request = { origin: start, destination: end, travelMode: 'DRIVING' }; directionsService.route(request, function(result, status) { if (status == 'OK') { directionsRenderer.setDirections(result); } }); }
Nel corpo del codice HTML:
<div> <strong>Start: </strong> <select id="start" onchange="calcRoute();"> <option value="chicago, il">Chicago</option> <option value="st louis, mo">St Louis</option> <option value="joplin, mo">Joplin, MO</option> <option value="oklahoma city, ok">Oklahoma City</option> <option value="amarillo, tx">Amarillo</option> <option value="gallup, nm">Gallup, NM</option> <option value="flagstaff, az">Flagstaff, AZ</option> <option value="winona, az">Winona</option> <option value="kingman, az">Kingman</option> <option value="barstow, ca">Barstow</option> <option value="san bernardino, ca">San Bernardino</option> <option value="los angeles, ca">Los Angeles</option> </select> <strong>End: </strong> <select id="end" onchange="calcRoute();"> <option value="chicago, il">Chicago</option> <option value="st louis, mo">St Louis</option> <option value="joplin, mo">Joplin, MO</option> <option value="oklahoma city, ok">Oklahoma City</option> <option value="amarillo, tx">Amarillo</option> <option value="gallup, nm">Gallup, NM</option> <option value="flagstaff, az">Flagstaff, AZ</option> <option value="winona, az">Winona</option> <option value="kingman, az">Kingman</option> <option value="barstow, ca">Barstow</option> <option value="san bernardino, ca">San Bernardino</option> <option value="los angeles, ca">Los Angeles</option> </select> </div>
L'esempio seguente mostra indicazioni stradali utilizzando diversi modalità di viaggio tra Haight-Ashbury a Ocean Beach in San Francisco, California (USA):
function initMap() { var directionsService = new google.maps.DirectionsService(); var directionsRenderer = new google.maps.DirectionsRenderer(); var haight = new google.maps.LatLng(37.7699298, -122.4469157); var oceanBeach = new google.maps.LatLng(37.7683909618184, -122.51089453697205); var mapOptions = { zoom: 14, center: haight } var map = new google.maps.Map(document.getElementById('map'), mapOptions); directionsRenderer.setMap(map); } function calcRoute() { var selectedMode = document.getElementById('mode').value; var request = { origin: haight, destination: oceanBeach, // Note that JavaScript allows us to access the constant // using square brackets and a string value as its // "property." travelMode: google.maps.TravelMode[selectedMode] }; directionsService.route(request, function(response, status) { if (status == 'OK') { directionsRenderer.setDirections(response); } }); }
Nel corpo del codice HTML:
<div> <strong>Mode of Travel: </strong> <select id="mode" onchange="calcRoute();"> <option value="DRIVING">Driving</option> <option value="WALKING">Walking</option> <option value="BICYCLING">Bicycling</option> <option value="TRANSIT">Transit</option> </select> </div>
Un DirectionsRenderer
non solo gestisce il display
della polilinea e gli eventuali indicatori associati, ma può anche gestire
la visualizzazione testuale delle indicazioni stradali sotto forma di serie di passaggi. Da fare
quindi chiama setPanel()
sul tuo
DirectionsRenderer
, passando il
<div>
in cui visualizzare queste informazioni.
In questo modo, avrai anche la certezza di mostrare le informazioni
informazioni ed eventuali avvisi associati alle
o il risultato finale.
Le istruzioni testuali verranno fornite utilizzando
l'impostazione della lingua preferita o la lingua specificata
caricamento del codice JavaScript dell'API mediante language
. Per ulteriori informazioni, vedi
localizzazione.) Nel caso delle indicazioni di trasporto pubblico, il tempo sarà
visualizzato nel fuso orario della fermata.
L'esempio seguente è identico a quello mostrato sopra.
ma include un riquadro <div>
in cui
visualizza le indicazioni stradali:
function initMap() { var directionsService = new google.maps.DirectionsService(); var directionsRenderer = new google.maps.DirectionsRenderer(); var chicago = new google.maps.LatLng(41.850033, -87.6500523); var mapOptions = { zoom:7, center: chicago } var map = new google.maps.Map(document.getElementById('map'), mapOptions); directionsRenderer.setMap(map); directionsRenderer.setPanel(document.getElementById('directionsPanel')); } function calcRoute() { var start = document.getElementById('start').value; var end = document.getElementById('end').value; var request = { origin:start, destination:end, travelMode: 'DRIVING' }; directionsService.route(request, function(response, status) { if (status == 'OK') { directionsRenderer.setDirections(response); } }); }
Nel corpo del codice HTML:
<div id="map" style="float:left;width:70%;height:100%"></div> <div id="directionsPanel" style="float:right;width:30%;height:100%"></div>
L'oggetto DirectionsResult
Quando invii una richiesta di indicazioni stradali al
DirectionsService
, ricevi una risposta composta da
un codice di stato e un risultato, che è DirectionsResult
. DirectionsResult
è un valore letterale oggetto
con i seguenti campi:
geocoded_waypoints[]
contiene un array diDirectionsGeocodedWaypoint
oggetti, ognuno contenente i dettagli sulla geocodifica di origine, destinazione e tappe.routes[]
contiene un array diDirectionsRoute
oggetti. Ogni percorso indica un modo per dall'origine alla destinazione specificataDirectionsRequest
. In genere, solo una route viene restituito per una determinata richiesta, a meno che l' Il campoprovideRouteAlternatives
è impostato sutrue
, in cui possono essere restituite più route.
Nota: la proprietà via_waypoint
è ritirata
in percorsi alternativi. La versione 3.27 è l'ultima versione dell'API che aggiunge ulteriori tappe
in percorsi alternativi. Per le versioni 3.28 e successive dell'API, puoi continuare a implementare
direzioni trascinabili utilizzando il servizio Indicazioni stradali disattivando il trascinamento di percorsi alternativi.
Solo il percorso principale deve essere trascinabile. Gli utenti possono trascinare il percorso principale fino a quando non corrisponde a un
un percorso alternativo.
Waypoint con codifica geografica Indicazioni stradali
Un DirectionsGeocodedWaypoint
contiene dettagli sulla geocodifica di
origine, destinazione e tappe.
DirectionsGeocodedWaypoint
è un valore letterale oggetto con
nei seguenti campi:
geocoder_status
indica il codice di stato risultante dall'operazione di geocodifica. Questo campo può contenere i seguenti valori."OK"
indica che non si sono verificati errori; l'indirizzo è stato analizzato correttamente e in è stato restituito almeno un geocodice."ZERO_RESULTS"
indica che il geocodice è riuscito, ma non ha restituito risultati. Questo può accadere se al geocodificatore è stato trasmesso unaddress
inesistente.
-
partial_match
indica che il geocodificatore non è tornato una corrispondenza esatta per la richiesta originale, anche se è stata in grado di corrispondere a parte l'indirizzo richiesto. Ti consigliamo di esaminare la richiesta originale relativa a errori ortografici e/o un indirizzo incompleto.Molto spesso le corrispondenze parziali si verificano per indirizzi che non esistono nella località passata nella richiesta. Anche le corrispondenze parziali possono essere restituito quando una richiesta corrisponde a due o più sedi nella stessa località. Ad esempio, "Via Roma, RM" restituirà una corrispondenza parziale per Henry Street e Henrietta Street. Tieni presente che se una richiesta include componente dell'indirizzo con errori ortografici, il servizio di geocodifica può suggerire un'alternativa . Anche i suggerimenti attivati in questo modo verranno contrassegnati come parziali corrispondono.
place_id
è l'identificatore univoco di un luogo, che può essere utilizzato con altre API di Google. Ad esempio, puoi utilizzareplace_id
con Google Places API per ottenere i dettagli di un'attività locale, come numero di telefono, orari di apertura, recensioni degli utenti e altro ancora. Consulta le panoramica di Place ID.types[]
è un array che indica il tipo di un risultato restituito. Questo array contiene un insieme di zero o più tag che identificano il tipo di caratteristica restituita nel risultato. Ad esempio, un codice geografico "Milano" restituisce "locality" che indica che "Chicago" c'è una città restituisce anche "political" che indica che si tratta di un'entità politica.
Directions Routes
Nota: l'oggetto DirectionsTrip
legacy ha
è stato rinominato DirectionsRoute
. Tieni presente che un percorso
ora si riferisce all'intero percorso dall'inizio alla fine, piuttosto che
una tappa del viaggio di un genitore.
Un DirectionsRoute
contiene un singolo risultato di
l'origine e la destinazione specificate. Questo percorso può essere composto da
una o più gambe (di tipo DirectionsLeg
)
a seconda che siano state specificate o meno tappe. Inoltre,
percorso contiene anche informazioni di avviso e copyright che devono
visualizzate all'utente insieme alle informazioni di routing.
DirectionsRoute
è un valore letterale oggetto con
nei seguenti campi:
legs[]
contiene un array diDirectionsLeg
oggetti, ognuno dei quali contiene informazioni su una tratta del percorso, da due posizioni all'interno del percorso specificato. Per ogni gamba sarà presente una gamba separata una tappa o una destinazione specificati. (Un percorso senza tappe contiene esattamente unDirectionsLeg
). Ogni gamba è composta di una serie diDirectionStep
.waypoint_order
contiene un array che indica l'ordine di tutti i waypoint nella percorso. Questo array può contenere un ordine alterato seDirectionsRequest
è stato superatooptimizeWaypoints: true
.overview_path
contiene un array diLatLng
che rappresentano un valore approssimativo (attenuato) delle direzioni risultanti.overview_polyline
contiene un singolopoints
che contiene un oggetto codificato polilinea della route. Questa polilinea è un percorso approssimativo (smussato) delle direzioni risultanti.bounds
contiene unLatLngBounds
che indica i confini della polilinea lungo il percorso specificato.copyrights
contiene il testo sul copyright da utilizzare visualizzate per questo percorso.warnings[]
contiene un array di avvisi da mostrare quando vengono mostrate queste indicazioni stradali. In caso contrario utilizzare l'oggettoDirectionsRenderer
fornito, devi gestire e visualizzare gli avvisi personalmente.fare
contiene la tariffa totale (ossia il totale costi dei biglietti) su questo percorso. Questa proprietà viene restituita solo per il trasporto pubblico e solo per i percorsi in cui le informazioni sulle tariffe sono disponibili per tutti tratti di trasporto pubblico. Le informazioni includono:currency
: un Valuta ISO 4217 che indica la valuta in cui è espresso l'importo.value
: importo totale della tariffa, nella valuta specificata in alto.
Tappe di indicazioni stradali
Nota: l'oggetto DirectionsRoute
legacy ha
è stato rinominato DirectionsLeg
.
Un DirectionsLeg
definisce un singolo ramo di un
viaggio dall'origine alla destinazione nel percorso calcolato.
Per i percorsi che non contengono tappe, il percorso sarà costituito da una
"gamba" singola, ma per i percorsi che definiscono una o più tappe,
il percorso sarà costituito da uno o più tratti, corrispondenti al
tratti specifici del viaggio.
DirectionsLeg
è un valore letterale oggetto con
seguenti campi:
steps[]
contiene un array diDirectionsStep
oggetti che indicano informazioni su ogni passaggio separato della tappa del viaggio.distance
indica la distanza totale percorsa per questa gamba, come oggettoDistance
del modulo seguente:value
indica la distanza in metritext
contiene una rappresentazione stringa della distanza, che per impostazione predefinita viene visualizzata in unità di misura utilizzata all'origine. (Ad esempio, le miglia saranno utilizzate per qualsiasi origine all'interno degli Stati Uniti). Puoi sostituire questa impostazione di unità di misura impostando in modo specificoUnitSystem
nella query originale. Tieni presente che, indipendentemente dal sistema di unità utilizzato, la classe Il campodistance.value
contiene sempre un valore espressa in metri.
Questi campi potrebbero non essere definiti se la distanza non è nota.
duration
indica la durata totale questa gamba, come oggettoDuration
di il seguente modulo:value
indica la durata in secondi.text
contiene una rappresentazione stringa della durata.
Questi campi potrebbero non essere definiti se la durata non è nota.
duration_in_traffic
indica la durata totale in base alle condizioni del traffico attuali. Laduration_in_traffic
viene restituito solo se tutti i seguenti elementi sono vere:- La richiesta non include tappe delle tappe. Vale a dire che non
includi le tappe in cui
stopover
ètrue
. - La richiesta riguarda specificamente le indicazioni stradali:
mode
impostata sudriving
. departureTime
è incluso nell'ambitodrivingOptions
nella richiesta.- Sono disponibili le condizioni del traffico per il percorso richiesto.
duration_in_traffic
contiene i seguenti campi:value
indica la durata in secondi.text
contiene una rappresentazione leggibile della durata.
- La richiesta non include tappe delle tappe. Vale a dire che non
includi le tappe in cui
arrival_time
contiene l'orario di arrivo previsto per questa gamba. Questa proprietà viene restituita solo per le indicazioni di trasporto pubblico. La il risultato viene restituito come oggettoTime
con tre proprietà:value
il tempo specificato come JavaScript OggettoDate
.text
il tempo specificato come stringa. È l'ora visualizzato nel fuso orario della fermata di trasporto pubblico.time_zone
contiene il fuso orario di questa stazione. La è il nome del fuso orario definito nel Fuso orario IANA Database, ad esempio "America/New_York".
departure_time
contiene l'orario di partenza stimato per questo tratto, specificato come oggettoTime
. Ladeparture_time
è disponibile solo per le indicazioni di trasporto pubblico.start_location
contiene il parametroLatLng
dell'origine di questa gamba. Poiché Il servizio web Directions calcola le indicazioni stradali tra località utilizzando l'opzione di trasporto più vicina (di solito una strada) alla i punti di partenza e di arrivo,start_location
può essere diversa dall'origine fornita di questo tratto se, per Ad esempio, una strada non è vicina all'origine.end_location
contieneLatLng
della destinazione di questa tappa. PoichéDirectionsService
calcola le indicazioni stradali tra le località utilizzando l'opzione di trasporto più vicina (di solito una strada) alla punti di partenza e di arrivo,end_location
può essere diversa dalla destinazione fornita per questa tratta se, ad Ad esempio, una strada non è vicina alla destinazione.start_address
contiene l'indirizzo leggibile (in genere la via) all'inizio di questa tratta.
Questi contenuti devono essere letti così come sono. Non analizzare in modo programmatico il all'indirizzo formattato.end_address
contiene l'indirizzo leggibile (in genere la via) alla fine di questa tratta.
Questi contenuti devono essere letti così come sono. Non analizzare in modo programmatico il all'indirizzo formattato.
Indicazioni stradali Passaggi
DirectionsStep
è l'unità più atomica di un
di questa direzione, contenente un singolo passo che descrive una specifica
istruzioni durante il viaggio. Ad es. "Svolta a sinistra in W. 4th St." Il passaggio non
descrive solo l'istruzione, ma contiene anche distanza e durata
informazioni relative alla correlazione tra questo passaggio e il passaggio successivo.
Ad esempio, un passaggio denominato "Entra nella I-80 Ovest" può contenere un
durata di "37 miglia" e "40 minuti", per indicare che il passaggio successivo
dista 40 minuti da questo passaggio.
Quando utilizzi il servizio Indicazioni stradali per cercare indicazioni di trasporto pubblico, il simbolo
step includerà anche Transit
Informazioni specifiche sotto forma di oggetto transit
. Se
le indicazioni stradali includono più modalità di trasporto, indicazioni stradali dettagliate
per i passi a piedi o in auto in un array di steps[]
.
Ad esempio, un passo a piedi includerà le indicazioni stradali dall'inizio e dalla fine
località: "Walk to Innes Ave & Fitch St". Questo passaggio includerà
indicazioni a piedi dettagliate per il percorso in steps[]
come: "Dirigiti a nord-ovest", "Svolta a sinistra su Arelious Walker" e
"Svolta a sinistra su Via Garibaldi."
DirectionsStep
è un valore letterale oggetto con
seguenti campi:
instructions
contiene le istruzioni per questo passaggio all'interno di una stringa di testo.distance
contiene la distanza percorsa da questo passaggio al passaggio successivo, come oggettoDistance
. (vedi la descrizione inDirectionsLeg
qui sopra. Questo campo potrebbe non essere definito se la distanza è sconosciuta.duration
contiene una stima del tempo necessario per eseguire il passaggio, fino al passaggio successivo, OggettoDuration
. (vedi la descrizione nellaDirectionsLeg
above.) Questo campo potrebbe non essere definito se la durata è sconosciuta.start_location
contiene il carattere geocodificatoLatLng
del punto iniziale di questo passaggio.end_location
contiene il valoreLatLng
di il punto finale di questo passaggio.polyline
contiene un singolopoints
che contiene un oggetto codificato polilinea del passaggio. Questa polilinea è un percorso approssimativo (smussato) del passaggio.steps[]
un valore letterale oggettoDirectionsStep
che contiene indicazioni dettagliate su come raggiungere la tua meta a piedi o in auto durante il trasporto pubblico indicazioni stradali. I passaggi secondari sono disponibili solo per le indicazioni di trasporto pubblico.travel_mode
contiene iTravelMode
utilizzati in questo passaggio. Le indicazioni per il trasporto pubblico possono includere una combinazione di percorsi a piedi e indicazioni stradali con il trasporto pubblico.path
contiene un array diLatLngs
che descrive nel corso di questo passaggio.transit
contiene informazioni specifiche sul trasporto pubblico, come orari di arrivo e partenza e il nome della linea di trasporto pubblico.
Informazioni specifiche sul trasporto pubblico
Le indicazioni stradali per il trasporto pubblico restituiscono informazioni aggiuntive non pertinenti per
altre modalità di trasporto. Queste proprietà aggiuntive sono esposte
tramite l'oggetto TransitDetails
, restituito come una proprietà
DirectionsStep
. Dall'oggetto TransitDetails
puoi accedere a informazioni aggiuntive per TransitStop
,
TransitLine
, TransitAgency
e
VehicleType
oggetto come descritto di seguito.
Dettagli trasporto pubblico
L'oggetto TransitDetails
espone quanto segue
proprietà:
arrival_stop
contiene unTransitStop
che rappresenta la stazione o la fermata di arrivo con i seguenti elementi: proprietà:name
il nome della stazione/fermata di trasporto pubblico. Ad esempio: "Piazza dell'Unione".location
la posizione della stazione/fermata di trasporto pubblico, rappresentato comeLatLng
.
departure_stop
contiene un elementoTransitStop
che rappresenta la stazione/fermata di partenza.arrival_time
contiene l'ora di arrivo, specificata come OggettoTime
con tre proprietà:- .
value
il tempo specificato come JavaScript OggettoDate
.text
il tempo specificato come stringa. È l'ora visualizzato nel fuso orario della fermata di trasporto pubblico.time_zone
contiene il fuso orario di questa stazione. La è il nome del fuso orario definito nel Fuso orario IANA Database, ad esempio "America/New_York".
departure_time
contiene l'orario di partenza, specificato come OggettoTime
.headsign
specifica la direzione in cui proseguire su questa linea, come indicato sul veicolo o alla fermata di partenza. Spesso si tratta della stazione capolinea.headway
se disponibile, specifica il numero previsto di secondi tra le partenze dalla stessa fermata in questo momento. Per Ad esempio, con un valoreheadway
pari a 600, ci si aspetta un dieci minuti di attesa se perdi l'autobus.line
contiene un elementoTransitLine
oggetto letterale che contiene informazioni sulla linea di transito utilizzata in questo passaggio.TransitLine
fornisce il nome e l'operatore linea, insieme alle altre proprietà descritte inTransitLine
documentazione di riferimento.num_stops
contiene il numero di tappe in questo passaggio. Include la fermata di arrivo, ma non la fermata di partenza. Ad esempio, se le indicazioni stradali prevedono la partenza dalla fermata A, il passaggio dalle fermate B e C, e arrivando alla fermata D,num_stops
restituirà 3.
Linea di trasporto pubblico
L'oggetto TransitLine
espone le seguenti proprietà:
name
contiene il nome completo di questa linea di trasporto pubblico. ad es. "7 Avenue Express" o "14th St Crosstown".short_name
contiene il nome breve di questo trasporto pubblico dalla riga di comando. Normalmente è un numero di riga, ad esempio "2" o "M14".agencies
è un array contenente un singolo OggettoTransitAgency
. L'oggettoTransitAgency
fornisce informazioni sull'operatore di questa linea, tra cui seguenti proprietà:name
contiene il nome dell'azienda di trasporto pubblico.phone
contiene il numero di telefono del trasporto pubblico agenzia.url
contiene l'URL dell'azienda di trasporto pubblico.
Nota: se visualizzi manualmente le indicazioni di trasporto pubblico invece di utilizzare l'oggetto
DirectionsRenderer
, devi mostra i nomi e gli URL delle aziende di trasporto pubblico che forniscono la corsa che consentono di analizzare i dati e visualizzare i risultati.url
contiene un URL per questa linea di trasporto pubblico fornito da dell'azienda di trasporto pubblico.icon
contiene un URL per l'icona associata a questa riga. Per la maggior parte delle città vengono usate icone generiche che variano in base al tipo di veicolo. Alcune le linee di trasporto pubblico, come la metropolitana di New York, hanno icone specifiche per su quella riga.color
contiene il colore comunemente utilizzato nella segnaletica trasporto pubblico. Il colore verrà specificato come stringa esadecimale, ad esempio: #FF0033.text_color
contiene il colore del testo di uso comune segnaletica di questa linea. Il colore verrà specificato come stringa esadecimale.vehicle
contiene un oggettoVehicle
che include le seguenti proprietà:- .
name
contiene il nome del veicolo su questa riga. Ad esempio: "Metrò."type
contiene il tipo di veicolo utilizzato su questa linea. Consulta la documentazione Tipo di veicolo per un l'elenco completo dei valori supportati.icon
contiene un URL per l'icona comunemente associata con questo tipo di veicolo.local_icon
contiene l'URL dell'icona associata con questo tipo di veicolo, in base alla segnaletica di trasporto locale.
Tipo di veicolo
L'oggetto VehicleType
espone quanto segue
proprietà:
Valore | Definizione |
---|---|
VehicleType.RAIL |
Treno. |
VehicleType.METRO_RAIL |
Metropolitana leggera. |
VehicleType.SUBWAY |
Metropolitana leggera sotterranea. |
VehicleType.TRAM |
Metropolitana leggera sopra il suolo. |
VehicleType.MONORAIL |
Monorotaia. |
VehicleType.HEAVY_RAIL |
Ferrovia pesante. |
VehicleType.COMMUTER_TRAIN |
Treni suburbani. |
VehicleType.HIGH_SPEED_TRAIN |
Treno ad alta velocità. |
VehicleType.BUS |
Autobus. |
VehicleType.INTERCITY_BUS |
Autobus interurbano. |
VehicleType.TROLLEYBUS |
Filobus. |
VehicleType.SHARE_TAXI |
Il taxi condiviso è un tipo di autobus con la possibilità di scendere e prendere per i passeggeri lungo il percorso. |
VehicleType.FERRY |
Traghetto. |
VehicleType.CABLE_CAR |
Veicolo che funziona su un cavo, solitamente a terra. Cavo aerea
le auto possono essere del tipo VehicleType.GONDOLA_LIFT . |
VehicleType.GONDOLA_LIFT |
Una funivia aerea. |
VehicleType.FUNICULAR |
Veicolo tirato su una ripida pendenza con un cavo. Una funicolare è generalmente composto da due auto, ciascuna delle quali funge da contrappeso. dell'altro. |
VehicleType.OTHER |
Tutti gli altri veicoli restituiranno questo tipo. |
Ispezione dei risultati di DirectionsResults
I componenti DirectionsResults
:
DirectionsRoute
, DirectionsLeg
DirectionsStep
e TransitDetails
, potrebbero essere
vengono esaminati e utilizzati durante l'analisi delle risposte alle indicazioni stradali.
Importante: se stai eseguendo il rendering del trasporto pubblico
le indicazioni stradali manualmente anziché utilizzare DirectionsRenderer
devi visualizzare i nomi e gli URL delle aziende di trasporto pubblico
per gestire i risultati della corsa.
L'esempio seguente mostra le indicazioni a piedi per un determinato turista
attrazioni di New York. Ispezioniamo il percorso
DirectionsStep
per aggiungere indicatori per ogni passaggio e
allegare informazioni a un InfoWindow
con istruzioni
per il passaggio.
Nota: poiché calcoliamo le indicazioni a piedi, visualizziamo anche
eventuali avvisi per l'utente in un riquadro <div>
separato.
var map; var directionsRenderer; var directionsService; var stepDisplay; var markerArray = []; function initMap() { // Instantiate a directions service. directionsService = new google.maps.DirectionsService(); // Create a map and center it on Manhattan. var manhattan = new google.maps.LatLng(40.7711329, -73.9741874); var mapOptions = { zoom: 13, center: manhattan } map = new google.maps.Map(document.getElementById('map'), mapOptions); // Create a renderer for directions and bind it to the map. var rendererOptions = { map: map } directionsRenderer = new google.maps.DirectionsRenderer(rendererOptions) // Instantiate an info window to hold step text. stepDisplay = new google.maps.InfoWindow(); } function calcRoute() { // First, clear out any existing markerArray // from previous calculations. for (i = 0; i < markerArray.length; i++) { markerArray[i].setMap(null); } // Retrieve the start and end locations and create // a DirectionsRequest using WALKING directions. var start = document.getElementById('start').value; var end = document.getElementById('end').value; var request = { origin: start, destination: end, travelMode: 'WALKING' }; // Route the directions and pass the response to a // function to create markers for each step. directionsService.route(request, function(response, status) { if (status == "OK") { var warnings = document.getElementById("warnings_panel"); warnings.innerHTML = "" + response.routes[0].warnings + ""; directionsRenderer.setDirections(response); showSteps(response); } }); } function showSteps(directionResult) { // For each step, place a marker, and add the text to the marker's // info window. Also attach the marker to an array so we // can keep track of it and remove it when calculating new // routes. var myRoute = directionResult.routes[0].legs[0]; for (var i = 0; i < myRoute.steps.length; i++) { var marker = new google.maps.Marker({ position: myRoute.steps[i].start_point, map: map }); attachInstructionText(marker, myRoute.steps[i].instructions); markerArray[i] = marker; } } function attachInstructionText(marker, text) { google.maps.event.addListener(marker, 'click', function() { stepDisplay.setContent(text); stepDisplay.open(map, marker); }); }
Nel corpo del codice HTML:
<div>
<strong>Start: </strong>
<select id="start">
<option value="penn station, new york, ny">Penn Station</option>
<option value="grand central station, new york, ny">Grand Central Station</option>
<option value="625 8th Avenue New York NY 10018">Port Authority Bus Terminal</option>
<option value="staten island ferry terminal, new york, ny">Staten Island Ferry Terminal</option>
<option value="101 E 125th Street, New York, NY">Harlem - 125th St Station</option>
</select>
<strong>End: </strong>
<select id="end" onchange="calcRoute();">
<option value="260 Broadway New York NY 10007">City Hall</option>
<option value="W 49th St & 5th Ave, New York, NY 10020">Rockefeller Center</option>
<option value="moma, New York, NY">MOMA</option>
<option value="350 5th Ave, New York, NY, 10118">Empire State Building</option>
<option value="253 West 125th Street, New York, NY">Apollo Theatre</option>
<option value="1 Wall St, New York, NY">Wall St</option>
</select>
<div>
Utilizzo dei waypoint nelle route
Come indicato in DirectionsRequest,
puoi anche specificare waypoint
(di tipo DirectionsWaypoint
) per il calcolo
percorsi che utilizzano il servizio Indicazioni stradali a piedi, in bicicletta o in auto
indicazioni stradali. I waypoint non sono disponibili per le indicazioni con il trasporto pubblico.
I waypoint consentono di calcolare i percorsi attraverso altre località, in
In questo caso, il percorso restituito passa attraverso le tappe indicate.
Un waypoint
è costituito dai seguenti campi:
location
(obbligatorio) specifica l'indirizzo del waypoint.stopover
(facoltativo) indica se questo la tappa è una tappa effettiva del percorso (true
) o solo una preferenza, per indirizzare località (false
). Gli scali sonotrue
per impostazione predefinita.
Per impostazione predefinita, il servizio Indicazioni stradali calcola un percorso tramite
le tappe indicate nel loro ordine. Facoltativamente,
potrebbe superare optimizeWaypoints: true
in
DirectionsRequest
per consentire al servizio Indicazioni stradali di
ottimizzare il percorso fornito riorganizzando le tappe in
in modo più efficiente. Questa ottimizzazione è un'applicazione
problema di venditore durante un viaggio.) Il tempo di percorrenza è il fattore principale
ottimizzato, ma ci sono altri fattori come distanza, numero di svolte e molti altri
possono essere presi in considerazione per decidere qual è il percorso più efficiente. Tutti
le tappe devono essere tappe affinché il servizio Indicazioni stradali
percorso.
Se indichi al servizio Indicazioni stradali di ottimizzare l'ordine delle
i suoi waypoint, il loro ordine verrà restituito
waypoint_order
nel campo
Oggetto DirectionsResult
.
L'esempio seguente calcola gli itinerari attraverso più paesi
negli Stati Uniti usando una varietà di punti di partenza, di arrivo,
e le tappe. Per selezionare più tappe, premi
Ctrl+Clic quando selezioni gli elementi nell'elenco.
Tieni presente che ispezioniamo routes.start_address
e routes.end_address
per fornire
con il testo relativo al punto di partenza e di arrivo di ogni percorso.
TypeScript
function initMap(): void { const directionsService = new google.maps.DirectionsService(); const directionsRenderer = new google.maps.DirectionsRenderer(); const map = new google.maps.Map( document.getElementById("map") as HTMLElement, { zoom: 6, center: { lat: 41.85, lng: -87.65 }, } ); directionsRenderer.setMap(map); (document.getElementById("submit") as HTMLElement).addEventListener( "click", () => { calculateAndDisplayRoute(directionsService, directionsRenderer); } ); } function calculateAndDisplayRoute( directionsService: google.maps.DirectionsService, directionsRenderer: google.maps.DirectionsRenderer ) { const waypts: google.maps.DirectionsWaypoint[] = []; const checkboxArray = document.getElementById( "waypoints" ) as HTMLSelectElement; for (let i = 0; i < checkboxArray.length; i++) { if (checkboxArray.options[i].selected) { waypts.push({ location: (checkboxArray[i] as HTMLOptionElement).value, stopover: true, }); } } directionsService .route({ origin: (document.getElementById("start") as HTMLInputElement).value, destination: (document.getElementById("end") as HTMLInputElement).value, waypoints: waypts, optimizeWaypoints: true, travelMode: google.maps.TravelMode.DRIVING, }) .then((response) => { directionsRenderer.setDirections(response); const route = response.routes[0]; const summaryPanel = document.getElementById( "directions-panel" ) as HTMLElement; summaryPanel.innerHTML = ""; // For each route, display summary information. for (let i = 0; i < route.legs.length; i++) { const routeSegment = i + 1; summaryPanel.innerHTML += "<b>Route Segment: " + routeSegment + "</b><br>"; summaryPanel.innerHTML += route.legs[i].start_address + " to "; summaryPanel.innerHTML += route.legs[i].end_address + "<br>"; summaryPanel.innerHTML += route.legs[i].distance!.text + "<br><br>"; } }) .catch((e) => window.alert("Directions request failed due to " + status)); } declare global { interface Window { initMap: () => void; } } window.initMap = initMap;
JavaScript
function initMap() { const directionsService = new google.maps.DirectionsService(); const directionsRenderer = new google.maps.DirectionsRenderer(); const map = new google.maps.Map(document.getElementById("map"), { zoom: 6, center: { lat: 41.85, lng: -87.65 }, }); directionsRenderer.setMap(map); document.getElementById("submit").addEventListener("click", () => { calculateAndDisplayRoute(directionsService, directionsRenderer); }); } function calculateAndDisplayRoute(directionsService, directionsRenderer) { const waypts = []; const checkboxArray = document.getElementById("waypoints"); for (let i = 0; i < checkboxArray.length; i++) { if (checkboxArray.options[i].selected) { waypts.push({ location: checkboxArray[i].value, stopover: true, }); } } directionsService .route({ origin: document.getElementById("start").value, destination: document.getElementById("end").value, waypoints: waypts, optimizeWaypoints: true, travelMode: google.maps.TravelMode.DRIVING, }) .then((response) => { directionsRenderer.setDirections(response); const route = response.routes[0]; const summaryPanel = document.getElementById("directions-panel"); summaryPanel.innerHTML = ""; // For each route, display summary information. for (let i = 0; i < route.legs.length; i++) { const routeSegment = i + 1; summaryPanel.innerHTML += "<b>Route Segment: " + routeSegment + "</b><br>"; summaryPanel.innerHTML += route.legs[i].start_address + " to "; summaryPanel.innerHTML += route.legs[i].end_address + "<br>"; summaryPanel.innerHTML += route.legs[i].distance.text + "<br><br>"; } }) .catch((e) => window.alert("Directions request failed due to " + status)); } window.initMap = initMap;
Limiti e restrizioni dei waypoint
Si applicano le restrizioni e i limiti di utilizzo seguenti:
- Il numero massimo di tappe consentite durante l'utilizzo del servizio Directions nell'API Maps JavaScript è 25, più il luogo di partenza e quello di destinazione. I limiti sono gli stessi per API Directions web.
- Per servizio web dell'API Directions, ai clienti 25 tappe, oltre a luogo di partenza e destinazione.
- Ai clienti del piano Google Maps Platform Premium sono consentiti 25 tappe, oltre a luogo di partenza e destinazione.
- I waypoint non sono supportati per le indicazioni di trasporto pubblico.
Indicazioni stradali trascinabili
Gli utenti possono modificare le indicazioni in bicicletta, a piedi o in auto visualizzate utilizzando un
DirectionsRenderer
in modo dinamico, se lo sono
trascinabile, che consente a un utente di selezionare e modificare
i percorsi facendo clic e trascinando sulla mappa i percorsi risultanti.
Devi indicare se il rendering di un renderer consente il trascinamento
indicazioni stradali impostando la relativa proprietà draggable
a true
. Le indicazioni stradali con il trasporto pubblico non possono essere trascinate.
Quando è possibile trascinare le direzioni, un utente può selezionare qualsiasi punto
il percorso (o waypoint) del risultato visualizzato e sposta
in una nuova posizione. DirectionsRenderer
verrà aggiornato in modo dinamico per mostrare il percorso modificato. Al momento del rilascio,
la tappa di transizione verrà aggiunta alla mappa (indicata da
un piccolo indicatore bianco). La selezione e lo spostamento di un segmento del percorso
modificare quel tratto del percorso, selezionando e spostando
un indicatore di tappa (compresi i punti di partenza e di arrivo) altera la
tratti del percorso che passa per la tappa in questione.
Poiché le direzioni trascinabili vengono modificate
e visualizzate sul lato client,
ti consigliamo di monitorare e gestire directions_changed
il giorno DirectionsRenderer
per ricevere una notifica
l'utente ha modificato le indicazioni stradali visualizzate.
Il seguente codice mostra un viaggio da Perth, sulla costa occidentale dell'Australia
a Sydney, sulla costa orientale. Il codice monitora
directions_changed
evento per aggiornare la distanza totale
di tutte le tappe del viaggio.
TypeScript
function initMap(): void { const map = new google.maps.Map( document.getElementById("map") as HTMLElement, { zoom: 4, center: { lat: -24.345, lng: 134.46 }, // Australia. } ); const directionsService = new google.maps.DirectionsService(); const directionsRenderer = new google.maps.DirectionsRenderer({ draggable: true, map, panel: document.getElementById("panel") as HTMLElement, }); directionsRenderer.addListener("directions_changed", () => { const directions = directionsRenderer.getDirections(); if (directions) { computeTotalDistance(directions); } }); displayRoute( "Perth, WA", "Sydney, NSW", directionsService, directionsRenderer ); } function displayRoute( origin: string, destination: string, service: google.maps.DirectionsService, display: google.maps.DirectionsRenderer ) { service .route({ origin: origin, destination: destination, waypoints: [ { location: "Adelaide, SA" }, { location: "Broken Hill, NSW" }, ], travelMode: google.maps.TravelMode.DRIVING, avoidTolls: true, }) .then((result: google.maps.DirectionsResult) => { display.setDirections(result); }) .catch((e) => { alert("Could not display directions due to: " + e); }); } function computeTotalDistance(result: google.maps.DirectionsResult) { let total = 0; const myroute = result.routes[0]; if (!myroute) { return; } for (let i = 0; i < myroute.legs.length; i++) { total += myroute.legs[i]!.distance!.value; } total = total / 1000; (document.getElementById("total") as HTMLElement).innerHTML = total + " km"; } declare global { interface Window { initMap: () => void; } } window.initMap = initMap;
JavaScript
function initMap() { const map = new google.maps.Map(document.getElementById("map"), { zoom: 4, center: { lat: -24.345, lng: 134.46 }, // Australia. }); const directionsService = new google.maps.DirectionsService(); const directionsRenderer = new google.maps.DirectionsRenderer({ draggable: true, map, panel: document.getElementById("panel"), }); directionsRenderer.addListener("directions_changed", () => { const directions = directionsRenderer.getDirections(); if (directions) { computeTotalDistance(directions); } }); displayRoute( "Perth, WA", "Sydney, NSW", directionsService, directionsRenderer, ); } function displayRoute(origin, destination, service, display) { service .route({ origin: origin, destination: destination, waypoints: [ { location: "Adelaide, SA" }, { location: "Broken Hill, NSW" }, ], travelMode: google.maps.TravelMode.DRIVING, avoidTolls: true, }) .then((result) => { display.setDirections(result); }) .catch((e) => { alert("Could not display directions due to: " + e); }); } function computeTotalDistance(result) { let total = 0; const myroute = result.routes[0]; if (!myroute) { return; } for (let i = 0; i < myroute.legs.length; i++) { total += myroute.legs[i].distance.value; } total = total / 1000; document.getElementById("total").innerHTML = total + " km"; } window.initMap = initMap;