指定路線位置

如要計算路線,至少須指定路線位置 起點和路線目的地您可以將這些位置定義為路線控點, 路徑。

除了出發地和目的地之外,您還可以指定不同類型的網路 路線控點,以及如何處理路線控點。如要進一步瞭解 請參閱下列主題:

指定路線的位置

建立 Waypoint (REST) 即可代表位置 或 Waypoint (gRPC) 物件。在 路線控點定義,可以透過下列任一方式指定位置:

您可以在要求中以相同的方式指定所有路線控點的位置。 也可以混合使用舉例來說,您可以用經緯度座標 起點路線控點,並使用目的地路線控點的地點 ID。

為提升效率和精確度,請使用地點 ID 取代經緯度。 座標或地址字串地點 ID 明確,且會提供 地理編碼的優點,例如存取點和流量變數。他們 可避免發生下列情況: 指定地區:

  • 使用經緯度座標可能導致位置 對齊到最靠近這些座標的道路,但這不一定是 通往地產的存取點,甚至是快速或安全的道路 會指向目的地
  • 地址字串必須先由 Routes API 進行地理編碼才能轉換 然後經過經緯度座標,才能計算路線。 這項轉換可能會影響成效。

指定特定地點做為地點 ID

您可以使用地點 ID 來指定路線點的位置。由於 經緯度座標會對齊道路,你可能會看到 在某些情況下,地點 ID 提供的結果品質較佳。

Geocoding API 擷取地點 ID,並 Places API (包括 Place API) Autocomplete)。如要進一步瞭解地點 ID,請參閱 地點 ID 總覽

下例使用 placeId 屬性來傳遞 origindestination

{
  "origin":{
    "placeId": "ChIJayOTViHY5okRRoq2kGnGg8o"
  },
  "destination":{
    "placeId": "ChIJTYKK2G3X5okRgP7BZvPQ2FU"
  },
  ...
}

以經緯度座標指定位置

如要在路線控點中定義位置,請指定 位置 (REST)Location(gRPC) 經緯度座標

例如,指定 origindestination 路線的路線控點 使用 latitudelongitude 座標:

{
  "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 內部對字串進行地理編碼,將字串轉換成經緯度 座標。

舉例來說,如要計算路線,您必須指定路線 origindestination (使用地址字串):

{
  "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 Codes,包括: Place AutocompletePlace Details Directions APIGeocoding API。 舉例來說,您可以使用 Geocoding API 對 透過經緯度座標指定的位置 以及位置的 Plus Code