這項產品目前處於舊版狀態。2026 年 10 月起,新的 Google Cloud 雲端專案將無法再啟用 Directions API (舊版)。現有專案仍可獲得完整支援。如要使用新功能並提升效能,請遷移至 Routes API。
要求範例
下列要求會傳回從安大略省多倫多到魁北克省蒙特婁的行車路線。
網址
https://maps.googleapis.com/maps/api/directions/json?destination=Montreal &origin=Toronto &key=YOUR_API_KEY
curl
curl -L -X GET 'https://maps.googleapis.com/maps/api/directions/json?origin=Toronto&destination=Montreal&key=YOUR_API_KEY'
只要變更 mode 和 avoid 參數,即可修改初始要求,傳回避開主要高速公路的單車觀光路線。
網址
https://maps.googleapis.com/maps/api/directions/json ?avoid=highways &destination=Montreal &mode=bicycling &origin=Toronto &key=YOUR_API_KEYYOUR_API_KEY
curl
curl -L -X GET 'https://maps.googleapis.com/maps/api/directions/json?origin=Toronto&destination=Montreal&avoid=highways&mode=bicycling&key=YOUR_API_KEY'YOUR_API_KEY'
下列要求會搜尋從紐約布魯克林到紐約皇后區的大眾運輸路線。要求未指定 departure_time,因此出發時間預設為目前時間:
網址
https://maps.googleapis.com/maps/api/directions/json ?destination=Queens &mode=transit &origin=Brooklyn &key=YOUR_API_KEY
curl
curl -L -X GET 'https://maps.googleapis.com/maps/api/directions/json?origin=Brooklyn&destination=Queens&mode=transit&keyYOUR_API_KEY'
下列大眾運輸路線規劃要求包含特定出發時間。
注意:在這個範例中,出發時間指定為 2012 年 7 月 30 日上午 9:45。為避免發生錯誤,請務必先將參數變更為未來時間,再提交要求。
網址
https://maps.googleapis.com/maps/api/directions/json ?departure_time=1343641500 &destination=Queens &mode=transit &origin=Brooklyn &key=YOUR_API_KEY
curl
curl -L -X GET 'https://maps.googleapis.com/maps/api/directions/json?origin=Brooklyn&destination=Queens&mode=transit&departure_time=1343641500&key=YOUR_API_KEY'
下列要求使用 Plus Code,傳回印度加爾各答從 H8MW+WP 到 GCG2+3M 的行車路線。
網址
https://maps.googleapis.com/maps/api/directions/json ?destination=GCG2%2B3M%20Kolkata%20India &origin=H8MW%2BWP%20Kolkata%20India &key=YOUR_API_KEY
curl
curl -L -X GET 'https://maps.googleapis.com/maps/api/directions/json?origin=H8MW%2BWP%20Kolkata%20India&destination=GCG2%2B3M%20Kolkata%20India&key=YOUR_API_KEY'
下列要求會使用地點 ID,傳回從英國格拉斯哥到英國伯斯的行車路線。
網址
https://maps.googleapis.com/maps/api/directions/json ?destination=place_id%3AChIJA01I-8YVhkgRGJb0fW4UX7Y &origin=place_id%3AChIJ685WIFYViEgRHlHvBbiD5nE &keyYOUR_API_KEY
curl
curl -L -X GET 'https://maps.googleapis.com/maps/api/directions/json?origin=place_id%3AChIJ685WIFYViEgRHlHvBbiD5nE&destination=place_id%3AChIJA01I-8YVhkgRGJb0fW4UX7Y&key=YOUR_API_KEY'
交通方式
計算路線時,您可以指定要使用的交通方式 mode。根據預設,系統會計算driving路線。支援下列交通方式:
driving(預設) 表示使用路網的標準行車路線。walking會要求沿途設有人行道和騎樓 (如有) 的步行路線。bicycling會要求沿途設有單車道與專用道路 (如有) 的單車路線。transit會要求使用大眾運輸的路線 (如有)。如果將模式設為transit,您可以選擇指定departure_time或arrival_time。如未指定任何時間,departure_time會預設為現在 (也就是出發時間預設為目前時間)。您也可以視需要加入transit_mode和/或transit_routing_preference。
注意:步行和單車路線有時可能無法明確提供人行道或單車道指示,因此這些路線會在傳回結果中傳回 warnings,您必須向使用者顯示。
交通資訊
如果符合下列所有條件 (這些是在 Directions 回應中收到
duration_in_traffic 欄位的必要條件),系統會使用車流量資訊:
- 交通方式的
mode參數為driving或未指定 (driving是預設的交通方式)。 - 要求內含有效的
departure_time參數。departure_time可以設為目前時間,也可設為未來的時間,不得設為過去的日期。 - 要求不含中途行經的路線控點。如果要求內含路線控點,請在每個路線控點前面加上
via:(用來控制該路徑但避免行經的中途點)。舉例來說,&waypoints=via:San Francisco|via:Mountain View|...
您也可以在要求中加入
traffic_model 參數,指定計算交通時間時要採用的假設。
下列網址會發出路線規劃要求,從麻薩諸塞州波士頓出發,經查爾斯敦和萊辛頓,前往麻薩諸塞州康科德。要求包含出發時間,符合在 Directions 回應中傳回 duration_in_traffic 欄位的所有規定。
網址
https://maps.googleapis.com/maps/api/directions/json ?departure_time=now &destination=Concord%2C%20MA &origin=Boston%2C%20MA &waypoints=via%3ACharlestown%2CMA%7Cvia%3ALexington%2CMA &key=YOUR_API_KEY
curl
curl -L -X GET 'https://maps.googleapis.com/maps/api/directions/json?origin=Boston%2C%20MA&destination=Concord%2C%20MA&waypoints=via%3ACharlestown%2CMA%7Cvia%3ALexington%2CMA&departure_time=now&key=YOUR_API_KEY'
路點
使用 Directions API (舊版) 計算路線時,您可以指定路線控點,傳回行經或停靠中間地點的路線。您可以在行車、步行或單車路線中新增路線控點,但無法在大眾運輸路線中新增。
在 waypoints 參數中指定位置。
您可以提供一或多個位置,並以直立線字元 (| 或 %7C) 分隔,格式可以是地點 ID、地址或經緯度座標。根據預設,路線規劃服務會依指定的路線控點順序計算路線。剖析路線控點值的優先順序為地點 ID、經緯度座標,最後是地址。
- 如果傳遞地點 ID,則必須在前面加上
place_id:。您可以從 Geocoding API 和 Places API (包括 Place Autocomplete) 擷取地點 ID。如需使用 Place Autocomplete 服務中地點 ID 的範例,請參閱 Place Autocomplete 和路線規劃。如要進一步瞭解地點 ID,請參閱地點 ID 總覽。為提高效率和準確度,請盡可能使用地點 ID。這些 ID 就像經緯度值組合一樣,是明確的不重複 ID,可為路線規劃提供地理編碼優勢,例如存取點和交通變數。與地址不同,ID 不需要服務執行搜尋或地點詳細資料的中繼要求,因此效能較佳。
- 如果傳遞經緯度座標,這些值會直接傳送至前端伺服器,用於計算路線,不需經過地理編碼。這些點會貼齊道路,可能無法提供應用程式所需的準確度。如果您確信這些值確實指定了應用程式規劃路線所需的點,而不考慮可能的存取點或其他地理編碼詳細資料,請使用座標。請務必使用半形逗號 (
%2C) 分隔經緯度值,而非空格 (%20)。 - 如果傳遞地址,路線規劃服務會對字串進行地理編碼,並將其轉換為經緯度座標,以計算路線。如果地址值不夠明確,系統可能會觸發搜尋,從類似地址中找出正確地址。舉例來說,「1st Street」可能是完整值,也可能是「1st street NE」或「1st St SE」的部分值。這項結果可能與 Geocoding API 傳回的結果不同。使用地點 ID 可避免可能的誤解。 請參閱「疑難排解我的路線要求結果」。
或者,您也可以使用編碼折線演算法提供一組編碼點。如果路線控點數量龐大,編碼組合會非常實用,因為網址會大幅縮短。所有網路服務的網址長度上限均為 16384 個字元。
- 編碼折線必須在開頭加上
enc:,後面接著冒號 (:)。例如:waypoints=enc:gfo}EtohhU:。 - 您也可以加入多個編碼折線,並以直立線字元 (
|) 分隔。例如:waypoints=via:enc:wc~oAwquwMdlTxiKtqLyiK:|enc:c~vnAamswMvlTor@tjGi}L:| via:enc:udymA{~bxM:
下列網址會發出路線規劃要求,規劃從麻薩諸塞州波士頓到麻薩諸塞州康科德的行程,並依序在查爾斯敦和萊辛頓中途停留。範例使用的位址如下:
網址
https://maps.googleapis.com/maps/api/directions/json ?destination=Concord%2C%20MA &origin=Boston%2C%20MA &waypoints=via%3ACharlestown%2CMA%7Cvia%3ALexington%2CMA &key=YOUR_API_KEY
curl
curl -L -X GET 'https://maps.googleapis.com/maps/api/directions/json?origin=Boston%2C%20MA&destination=Concord%2C%20MA&waypoints=via%3ACharlestown%2CMA%7Cvia%3ALexington%2CMA&key=YOUR_API_KEY'
透過中途停留點和經過點影響路線
針對要求中的每個路線控點,規劃路線回應會在 legs 陣列中附加一個項目,提供該段行程中途停靠點的詳細資料。
如要使用路線控點影響路線,但不新增中途點,請在路線控點加上 via: 前置字元。如果路線控點的前置字元為 via:,則不會在 legs 陣列中新增項目,但會將旅程路線規劃為行經該路線控點。
下列網址會修改先前的要求,讓行程經過 Lexington,但不停靠:
網址
https://maps.googleapis.com/maps/api/directions/json ?destination=Concord%2C%20MA &origin=Boston%2C%20MA &waypoints=Charlestown%2CMA%7Cvia%3ALexington%2CMA &key=YOUR_API_KEY
curl
curl -L -X GET 'https://maps.googleapis.com/maps/api/directions/json?origin=Boston%2C%20MA&destination=Concord%2C%20MA&waypoints=Charlestown%2CMA%7Cvia%3ALexington%2CMA&key=YOUR_API_KEY'
當使用者在地圖上拖曳路線控點,系統建立路線時,via: 前置字元最有效。這樣一來,使用者就能即時查看最終路線,並確保路線控點位於 Directions API (舊版) 可存取的位置。
下列網址使用經緯度座標要求路線控點:
網址
https://maps.googleapis.com/maps/api/directions/json ?destination=Perth%2C%20AU &origin=Sydney%2C%20AU &waypoints=via%3A-37.81223%2C144.96254%7Cvia%3A-34.92788%2C138.60008 &key=YOUR_API_KEY
curl
curl -L -X GET 'https://maps.googleapis.com/maps/api/directions/json?origin=Sydney%2C%20AU&destination=Perth%2C%20AU&waypoints=via%3A-37.81223%2C144.96254%7Cvia%3A-34.92788%2C138.60008&key=YOUR_API_KEY'
以下是使用編碼折線的相同要求:
網址
https://maps.googleapis.com/maps/api/directions/json ?destination=Perth%2C%20AU &origin=Sydney%2C%20AU &waypoints=via%3Aenc%3AlexeF%7B~wsZejrPjtye%40%3A &key=YOUR_API_KEY
curl
curl -L -X GET 'https://maps.googleapis.com/maps/api/directions/json?origin=Sydney%2C%20AU&destination=Perth%2C%20AU&waypoints=via%3Aenc%3AlexeF%7B~wsZejrPjtye%40%3A&key=YOUR_API_KEY'
請注意,您可以自由混合 via: 指定碼和位置修飾符。例如:
網址
https://maps.googleapis.com/maps/api/directions/json ?destination=Perth%2C%20AU &origin=Sydney%2C%20AU &waypoints=side_of_road%3Avia%3Aenc%3AlexeF%7B~wsZejrPjtye%40%3A &key=YOUR_API_KEY
curl
curl -L -X GET 'https://maps.googleapis.com/maps/api/directions/json?origin=Sydney%2C%20AU&destination=Perth%2C%20AU&waypoints=side_of_road%3Avia%3Aenc%3AlexeF%7B~wsZejrPjtye%40%3A&key=YOUR_API_KEY'
最佳化路線控點
在預設情況下,路線規劃服務會依指定的路線控點順序計算路線。或者,您可以選擇在 waypoints 參數中傳送 optimize:true 做為第一個引數,如此一來,路線規劃服務就能透過更有效率的順序調整路線控點,規劃出最佳路線 (這項最佳化做法是旅行推銷員問題的實際應用)。交通時間是最佳化的主要因素,但在判斷哪條路線最有效率時,系統也會將距離、轉彎次數和許多其他因素納入考量。所有路線控點都必須為停靠點,路線規劃服務才能進行路線最佳化。
如果您指示路線規劃服務進行路線控點順序最佳化,系統會在 routes 物件的 waypoint_order 欄位中傳回這些順序。waypoint_order 欄位傳回的值從零開始。
以下範例使用路線最佳化功能,計算從南澳州阿德萊德到南澳州各主要葡萄酒產區的公路行程。
網址
https://maps.googleapis.com/maps/api/directions/json ?destination=Adelaide%2C%20SA &origin=Adelaide%2C%20SA &waypoints=optimize%3Atrue%7CBarossa%20Valley%2C%20SA%7CClare%2C%20SA%7CConnawarra%2C%20SA%7CMcLaren%20Vale%2C%20SA &key=YOUR_API_KEY
curl
curl -L -X GET 'https://maps.googleapis.com/maps/api/directions/json?origin=Adelaide%2C%20SA&destination=Adelaide%2C%20SA&waypoints=optimize%3Atrue%7CBarossa%20Valley%2C%20SA%7CClare%2C%20SA%7CConnawarra%2C%20SA%7CMcLaren%20Vale%2C%20SA&key=YOUR_API_KEY'
檢查計算出的路線後,您會發現計算作業是按照下列路線控點順序使用路線控點:
"waypoint_order": [ 3, 2, 0, 1 ]
限制
導航的計算方式必須遵守某些限制︰限制條件會以 avoid 參數表示,並以該參數的引數表示要避免的限制。支援的限制如下:
avoid=tollsavoid=highwaysavoid=ferries
您可以將多個限制傳遞至 avoid 參數,要求避開收費路段、高速公路和渡輪的任何組合。例如:avoid=tolls|highways|ferries。
注意:新增限制並不會排除包含受限功能的路線,而是會將結果偏向更有利的路線。
單位系統
路線規劃結果包含 text 欄位中的 distance,可向使用者顯示路線中特定「步驟」的距離。根據預設,這段文字會使用起點國家/地區的單位系統。
例如,從「伊利諾州芝加哥」到「安大略省多倫多」的路線會以英里顯示結果,但回程路線會以公里顯示結果。只要在要求的 units 參數中明確設定單位,並傳遞下列其中一個值,即可覆寫此單位系統:
metric會指定使用公制系統。傳回的距離單位文字會使用公里與公尺。imperial會指定使用英制系統。傳回的距離單位文字會使用英里和英尺。
注意: 此單位系統設定只會影響 distance 欄位中顯示的 text。distance 欄位也包含一律以公尺表示的 values。
區域自訂調整
您可以使用 region 參數,讓路線規劃服務傳回特定區域的結果。這個參數會採用雙字元 ccTLD (國家/地區代碼頂層網域) 引數,指定區域偏誤。大多數 ccTLD 代碼與 ISO 3166-1 alpha-2 代碼相同,但有一些需要注意的例外情況。舉例來說,英國的 ccTLD 是「uk」(.co.uk),而 ISO 3166-1 代碼則是「gb」(技術上代表「大不列顛及北愛爾蘭聯合王國」)。如需支援區域的相關資訊,請參閱 Google 地圖平台涵蓋範圍詳細資料。
只要是主要 Google 地圖應用程式已推出行車路線的網域,都可以使用。
舉例來說,如果將 region 設為 es,系統會將「Toledo」解讀為西班牙城市,並在您要求從「Toledo」到「Madrid」的路線時,傳回適當結果:
網址
https://maps.googleapis.com/maps/api/directions/json ?destination=Madrid &origin=Toledo ®ion=es &key=YOUR_API_KEY
curl
curl -L -X GET 'https://maps.googleapis.com/maps/api/directions/json?origin=Toledo&destination=Madrid®ion=es&key=YOUR_API_KEY'
JSON
{ "geocoded_waypoints": [ { "geocoder_status": "OK", "place_id": "ChIJ8f21C60Lag0R_q11auhbf8Y", "types": ["locality", "political"], }, { "geocoder_status": "OK", "place_id": "ChIJgTwKgJcpQg0RaSKMYcHeNsQ", "types": ["locality", "political"], }, ], "routes": [ { "bounds": { "northeast": { "lat": 40.4165207, "lng": -3.7026134 }, "southwest": { "lat": 39.862808, "lng": -4.029406799999999 }, }, "copyrights": "Map data ©2022 Inst. Geogr. Nacional", "legs": [ { "distance": { "text": "74.3 km", "value": 74327 }, "duration": { "text": "57 mins", "value": 3446 }, "end_address": "Madrid, Spain", "end_location": { "lat": 40.4165207, "lng": -3.705076 }, "start_address": "Toledo, Spain", "start_location": { "lat": 39.862808, "lng": -4.0273727 }, "steps": [ { "distance": { "text": "0.6 km", "value": 615 }, "duration": { "text": "2 mins", "value": 106 }, "end_location": { "lat": 39.8681019, "lng": -4.029378299999999 }, "html_instructions": "Head <b>northwest</b> on <b>Av. de la Reconquista</b> toward <b>C. de la Diputación</b>", "polyline": { "points": "quhrF`rqWCBQJUJm@PQFg@Ni@JeBh@}@XaD|@{@Vk@Ns@RUFoA^u@R_AXwA`@WHMBG@C?E?GAC?IC", }, "start_location": { "lat": 39.862808, "lng": -4.0273727 }, "travel_mode": "DRIVING", }, // Additional steps omitted for brevity ], "traffic_speed_entry": [], "via_waypoint": [], }, ], "overview_polyline": { "points": "quhrF`rqWcHzBaNzDeG~A][?k@lA{Dr@mBR]HmA[WQDWE[g@mAeE... (truncated for brevity)", }, "summary": "A-42", "warnings": [], "waypoint_order": [], }, ], "status": "OK", }
XML
<DirectionsResponse> <status>OK</status> <route> <summary>A-42</summary> <leg> <step> <travel_mode>DRIVING</travel_mode> <start_location> <lat>39.8628080</lat> <lng>-4.0273727</lng> </start_location> <end_location> <lat>39.8681019</lat> <lng>-4.0293783</lng> </end_location> <polyline> <points>quhrF`rqWCBQJUJm@PQFg@Ni@JeBh@}@XaD|@{@Vk@Ns@RUFoA^u@R_AXwA`@WHMBG@C?E?GAC?IC</points> </polyline> <duration> <value>106</value> <text>2 mins</text> </duration> <html_instructions>Head <b>northwest</b> on <b>Av. de la Reconquista</b> toward <b>C. de la Diputación</b></html_instructions> <distance> <value>615</value> <text>0.6 km</text> </distance> </step> <!-- Additional steps omitted for brevity --> <duration> <value>3446</value> <text>57 mins</text> </duration> <distance> <value>74327</value> <text>74.3 km</text> </distance> <start_location> <lat>39.8628080</lat> <lng>-4.0273727</lng> </start_location> <end_location> <lat>40.4165207</lat> <lng>-3.7050760</lng> </end_location> <start_address>Toledo, Spain</start_address> <end_address>Madrid, Spain</end_address> </leg> <copyrights>Map data ©2022 Inst. Geogr. Nacional</copyrights> <overview_polyline> <points>quhrF`rqWcHzBaNzDeG~A][?k@lA{Dr@mBR]HmA[WQDWE[g@mAeE... (truncated for brevity)</points> </overview_polyline> <bounds> <southwest> <lat>39.8628080</lat> <lng>-4.0294068</lng> </southwest> <northeast> <lat>40.4165207</lat> <lng>-3.7026134</lng> </northeast> </bounds> </route> <geocoded_waypoint> <geocoder_status>OK</geocoder_status> <type>locality</type> <type>political</type> <place_id>ChIJ8f21C60Lag0R_q11auhbf8Y</place_id> </geocoded_waypoint> <geocoded_waypoint> <geocoder_status>OK</geocoder_status> <type>locality</type> <type>political</type> <place_id>ChIJgTwKgJcpQg0RaSKMYcHeNsQ</place_id> </geocoded_waypoint> </DirectionsResponse>
如果傳送「Toledo」到「Madrid」的路線規劃要求時未提供 region 參數,系統就不會傳回結果,因為「Toledo」會被解讀為俄亥俄州的城市,而非西班牙的城市:
網址
https://maps.googleapis.com/maps/api/directions/json ?destination=Madrid &origin=Toledo &key=YOUR_API_KEY
curl
curl -L -X GET 'https://maps.googleapis.com/maps/api/directions/json?origin=Toledo&destination=Madrid&key=YOUR_API_KEY'
JSON
{ "geocoded_waypoints": [ { "geocoder_status": "OK", "place_id": "ChIJeU4e_C2HO4gRRcM6RZ_IPHw", "types": ["locality", "political"], }, { "geocoder_status": "OK", "place_id": "ChIJgTwKgJcpQg0RaSKMYcHeNsQ", "types": ["locality", "political"], }, ], "routes": [], "status": "ZERO_RESULTS", }
XML
<DirectionsResponse> <status>ZERO_RESULTS</status> <geocoded_waypoint> <geocoder_status>OK</geocoder_status> <type>locality</type> <type>political</type> <place_id>ChIJeU4e_C2HO4gRRcM6RZ_IPHw</place_id> </geocoded_waypoint> <geocoded_waypoint> <geocoder_status>OK</geocoder_status> <type>locality</type> <type>political</type> <place_id>ChIJgTwKgJcpQg0RaSKMYcHeNsQ</place_id> </geocoded_waypoint> </DirectionsResponse>
位置修飾符
您可以使用位置修飾符,指示駕駛人應如何前往特定位置,方法是使用 side_of_road 參數指定要使用哪一側道路,或指定行進方向。這些修飾符可與中繼路線控點的 via: 修飾符自由搭配使用。
指定路線必須經過道路的特定一側
指定路線控點時,您可以使用 side_of_road: 前置字元,要求路線經過路線控點偏向的道路側。舉例來說,這項路線規劃要求會傳回一條長路線,讓車輛停在路線控點偏向的道路一側:
網址
https://maps.googleapis.com/maps/api/directions/json ?destination=side_of_road%3A37.7663444%2C-122.4412006 &origin=37.7680296%2C-122.4375126 &key=YOUR_API_KEY
curl
curl -L -X GET 'https://maps.googleapis.com/maps/api/directions/json?origin=37.7680296%2C-122.4375126&destination=side_of_road%3A37.7663444%2C-122.4412006&key=YOUR_API_KEY'
搭配編碼折線使用 side_of_road: 時,系統會將參數套用至折線上的每個位置。
side_of_road: 修飾符只能與下列限制搭配使用:
-
交通方式的
mode參數為driving或未指定 (driving是預設的交通方式)。
指定路線應有特定方向
指定路線控點時,您可以要求路線以特定方向通過該控點。這個航向是以 heading=X: 前置字元指定,其中 X 是介於 0 (含) 至 360 (不含) 之間的整數度數值。0 代表北,90 代表東,依順時針方向繼續。舉例來說,在這個路線規劃要求中,路線會從起點向東,然後 U 轉:
網址
https://maps.googleapis.com/maps/api/directions/json ?destination=37.773245%2C-122.469502 &origin=heading%3D90%3A37.773279%2C-122.468780 &key=YOUR_API_KEY
curl
curl -L -X GET 'https://maps.googleapis.com/maps/api/directions/json?origin=heading%3D90%3A37.773279%2C-122.468780&destination=37.773245%2C-122.469502&key=YOUR_API_KEY'
heading=X: 修飾符只能在下列限制下使用:
-
交通方式的
mode參數為driving、bicycling或未指定 (driving是預設的交通方式)。 - 未針對相同位置指定
side_of_road修飾符。 - 位置是以經緯度值指定。您不得將
heading與地址、地點 ID 或編碼折線搭配使用。