如要計算路線,至少須指定路線位置 起點和路線目的地您可以將這些位置定義為路線控點, 路徑。
除了出發地和目的地之外,您還可以指定不同類型的網路 路線控點,以及如何處理路線控點。如要進一步瞭解 請參閱下列主題:
指定路線的位置
建立 Waypoint (REST) 即可代表位置 或 Waypoint (gRPC) 物件。在 路線控點定義,可以透過下列任一方式指定位置:
您可以在要求中以相同的方式指定所有路線控點的位置。 也可以混合使用舉例來說,您可以用經緯度座標 起點路線控點,並使用目的地路線控點的地點 ID。
為提升效率和精確度,請使用地點 ID 取代經緯度。 座標或地址字串地點 ID 明確,且會提供 地理編碼的優點,例如存取點和流量變數。他們 可避免發生下列情況: 指定地區:
- 使用經緯度座標可能導致位置 對齊到最靠近這些座標的道路,但這不一定是 通往地產的存取點,甚至是快速或安全的道路 會指向目的地
- 地址字串必須先由 Routes API 進行地理編碼才能轉換 然後經過經緯度座標,才能計算路線。 這項轉換可能會影響成效。
指定特定地點做為地點 ID
您可以使用地點 ID 來指定路線點的位置。由於 經緯度座標會對齊道路,你可能會看到 在某些情況下,地點 ID 提供的結果品質較佳。
從 Geocoding API 擷取地點 ID,並 Places API (包括 Place API) Autocomplete)。如要進一步瞭解地點 ID,請參閱 地點 ID 總覽。
下例使用 placeId
屬性來傳遞
origin
和 destination
:
{ "origin":{ "placeId": "ChIJayOTViHY5okRRoq2kGnGg8o" }, "destination":{ "placeId": "ChIJTYKK2G3X5okRgP7BZvPQ2FU" }, ... }
以經緯度座標指定位置
如要在路線控點中定義位置,請指定 位置 (REST) 或 Location(gRPC) 經緯度座標
例如,指定 origin
和 destination
路線的路線控點
使用 latitude
和 longitude
座標:
{ "origin":{ "location":{ "latLng":{ "latitude": 37.419734, "longitude": -122.0827784 } } }, "destination":{ "location":{ "latLng":{ "latitude": 37.417670, "longitude": -122.079595 } } }, ... }
將位置指定為地址字串
地址字串是以字串表示的常值地址 (例如「1600」) Amphitheatre Parkway, Mountain View, CA」)。地理編碼是指 將地址字串轉換成經緯度座標 (例如 緯度 37.423021 和經度 -122.083739)。
當您將地址字串做為路線控點的位置傳送時,Routes API 內部對字串進行地理編碼,將字串轉換成經緯度 座標。
舉例來說,如要計算路線,您必須指定路線 origin
和
destination
(使用地址字串):
{ "origin":{ "address": "1600 Amphitheatre Parkway, Mountain View, CA" }, "destination":{ "address": "450 Serra Mall, Stanford, CA 94305, USA" }, ... }
在本例中,Routes API 會對兩個地址進行地理編碼,以便將這些地址轉換成 經緯度座標
如果地址值不明確,Routes API 可能會叫用搜尋到 以便區分相似地址例如「1st Street」可以是 「1st Street NE」的完整值或部分值或「西街 1 號」。這個 結果可能與 Geocoding API 傳回的結果不同。請避免 可能使地點 ID 誤解
設定位址的區域
如果您傳送不完整的地址字串做為路線控點的位置,API 可能會使用地理編碼錯誤的經緯度座標。例如: 要求建立「Toledo」做為起點,另一個則是「馬德里」作為 行車路線的目的地:
{ "origin":{ "address": "Toledo" }, "destination":{ "address": "Madrid" }, "travelMode": "DRIVE" }
在這個範例中,「Toledo」被解讀為 位於美國俄亥俄州,而非西班牙。因此,要求會傳回 空陣列,表示沒有路徑:
{ [] }
您可以設定 API,只傳回特定區域的結果
包括 regionCode
參數這個參數將區域代碼指定為
ccTLD (「頂層網域」)
兩個字元的值多數 ccTLD 代碼與 ISO 3166-1 代碼相同,
一些特殊的例外狀況舉例來說,英國的 ccTLD 是「uk」
(.co.uk),但 ISO 3166-1 代碼卻是「gb」(技術上來說,「
大不列顛暨北愛爾蘭聯合王國」)。
「Toledo」的路線要求「馬德里」,其中包含 regionCode
參數會傳回適當的結果,因為「Toledo」會被解讀為
西班牙城市:
{ "origin":{ "address": "Toledo" }, "destination":{ "address": "Madrid" }, "travelMode": "DRIVE", "regionCode": "es" }
回應現在包含從西班牙 Toledo 規劃的路線 西班牙馬德里:
{ "routes": [ { "distanceMeters": 75330, "duration": "4137s", ... } ] }
將某個地點指定為 Plus Code
許多人不會提供精確的地址,這可能會讓他們難以使用 以便收取貨運或者,知道地址的使用者可能偏好接受 送到特定地點的貨品,例如後門或載入中 座架。
Plus Code 就像是沒有 實際的地址。使用 Plus Codes 取代包含街道名稱和號碼的地址 是以經緯度座標為依據,會以數字和 字母。
Google 開發了 Plus Codes 讓所有人都能享有地址的好處Plus Code 經過編碼處理 地點參照,衍生自經緯度座標, 代表面積:有 1/8000 度的 1/8000 度 (約 14 公尺 x 赤道為 14 公尺) 以下。您可以使用 Plus Codes 取代 街道地址,但該地不存在或建築物不存在 沒有編號或街道名稱。
Plus Code 必須採用全球代碼或複合代碼格式:
- 「全球代碼」是由 4 個字元的「區碼」和 6 個字元組成
字元或更長的當地代碼。
舉例來說,假設地址是「1600 Amphitheatre Parkway, Mountain View, CA」的全球代碼是「849V」而局部程式碼則是 「CWC8+R9」。接著,請使用整段 10 個字元的 Plus Code 來指定 將位置值設定為「849VCWC8+R9」。
- 「複合代碼」是由 6 個半形字元或更長時間所組成
local code (本機代碼) 加上明確的位置。
例如「450 Serra」地址 Mall, Stanford, CA 94305, USA"當地代碼為「CRHJ+C3」。化合物 地址,請將本地代碼與城市、州/省、郵遞區號和國家/地區結合 部分地址,格式為「CRHJ+C3 Stanford, CA 94305, USA」。
舉例來說,您可以指定路線
origin
的路線控點,藉此計算路線 和destination
使用 Plus Code:{ "origin":{ "address": "849VCWC8+R9" }, "destination":{ "address": "CRHJ+C3 Stanford, CA 94305, USA" }, "travelMode": "DRIVE" }
Google 地圖平台 API 支援 Plus Code,包括地點自動完成、地點詳細資料、Directions API 和 Geocoding API。舉例來說,您可以使用 Geocoding API 對 透過經緯度座標指定的位置 以及位置的 Plus Code