在透過車輛導航前往地點時,創造最佳使用者體驗的提示

這份文件有新版本,其中提供新版 Places API 和 Routes API 的使用範例。

一般來說,當使用者開車前往某個搜尋點 (POI) 時,他們實際上需要導航至附近位置,例如停車場或存取點。想像一下,司機需要前往機場或購物中心。前往機場時,司機會嘗試前往航廈或下車地點,而不是機場建築群的中心。同樣地,如果使用者有車,購物中心旁的停車場可能會是更好的選擇。在這種情況下,開發應用程式或服務來引導駕駛員時,請先找出他們要前往的地點,然後提供駕駛員該地附近的替代目的地。您可以透過這種方法,運用 Google 地圖平台提供的位置資料,以小而精明的開發工作,為客戶提供更優質的服務,並展現您重視客戶的時間。

[系統背景] 高階導航系統
簡化版系統檢視畫面,顯示引導駕駛人前往目的地時所涉及的系統
高階系統圖

我們將說明如何依序或同時使用 Places API 和 Directions API,找出最適合在目的地附近停車的位置。這個解決方案旨在消除不確定性和多次互動,以便在行駛至最終目的地時,找到停車位。以下將詳細說明這兩種情況的實作方式。

範例 1:沒有停車場的觀光景點

請選擇一個與路邊無直接連結的地點,以便分別擷取路線,目的地是巴黎的聖母院起點則是Gare de l’Est 火車站 (48.87697775149635, 2.3592247806755564)。

Gare de l'Est

司機會從車站出發,大約在離開車站後 16 分鐘抵達巴黎聖母院。聖母院是位於島上的著名觀光景點,可透過橋樑抵達,但附近有部分單行道,且沒有大型停車場,因此這應該是一項有趣的挑戰。

Places API 要求

這個 Places API 要求範例使用「文字搜尋」功能尋找 Notre Dame。詳情請參閱開發人員說明文件。這些範例中的「YOUR_KEY」是您在 Google Cloud 控制台中啟用的 Google 地圖平台 Places API 和 Directions API 的 API 金鑰。如需更詳細的說明,請參閱「開始使用 Google 地圖平台」說明文件。

https://maps.googleapis.com/maps/api/place/textsearch/json?query=notre_dame&location=48.864716%2C2.349014&region=fr&key=YOUR_KEY

上述要求的回應會提供下列緯度和經度座標:

  "results" : [
      {
        "formatted_address" : "Notre Dame, Paris",
        "geometry" : {
           "location" : {
               "lat" : 48.8527288,
                },
  ...

如你所見,座標確實指向聖母院。

聖母院相片
地圖上的巴黎聖母院

開發人員或服務供應商不妨自動提示駕駛人「想在 Notre Dame 附近停車嗎?」。使用者體驗會因裝置和螢幕而異,但在這種情況下,不妨考慮使用短時間後就會消失的輕量彈出式文字。如要尋找位於 Notre Dame 附近的停車位,請使用 Places API 文字搜尋,並設定類型為「parking」,半徑為「300」的參數。這個範例會將結果偏向距離 Notre Dame 300 公尺內的停車區。

https://maps.googleapis.com/maps/api/place/textsearch/json?query=parking
&location=48.8527288%2C2.3505635&region=fr&type=parking&radius=300&key=YOUR_KEY

第一個結果是「Parking Saemes Maubert-Lagrange」,位於 48.850591、2.3486436。我們會在下一個部分使用這個位置,執行 Directions API 要求。

Directions API 要求

如要尋找從車站到巴黎聖母院附近停車區的路線,您需要發出 Directions API 要求。只要設定來源和目的地參數即可。如需其他選項,請參閱開發人員說明文件

https://maps.googleapis.com/maps/api/directions/json?origin=48.8767903,2.3592251&destination=48.850591%2C2.3486436&key=YOUR_KEY

方向 API 回應通常包含多個路線建議。每條路線都包含多個「路段」,而每個路段又包含多個「步驟」,顯示行程距離和座標。如要找出可透過車輛抵達的最終座標,請使用所選路線最後一站的最後步驟中「end_location」欄位。

這個地點可能不是第一個選擇,但查看地圖或 Google 街景時,你會發現這個地點距離巴黎聖母院只有 6 到 7 分鐘的步行路程,非常近。

從停車場步行至巴黎聖母院

從停車區步行至巴黎聖母院的路線

範例 1 的摘要

如您所見,尋找汽車停車區只需要幾個 API 呼叫,並向駕駛人顯示建議。這樣一來,使用者就不必在單行道上兜圈子,也不必在擁擠的觀光景點尋找停車位,因此可節省時間。以下是我們執行的 API 要求摘要:

  • 使用 Places API 要求找出 Notre Dame 的座標
  • 透過 Places API 要求找出位於這些座標 300 公尺範圍內的停車區
  • 使用 Directions API 要求找出前往停車區的路線

範例 2:引導使用者前往大型機場的航廈

地圖上的希斯洛機場
我們來看另一個例子,假設駕駛員要前往的區域範圍廣大,且有多個地點、興趣點或潛在下車地點。駕駛員將從英國溫布利球場 (51.557263604707224, -0.2794575145680608) 出發,並試圖前往倫敦希斯洛機場第 5 航廈。通常使用者會開始輸入「Heathrow」,如果看起來是正確的結果,大多數人會選擇前 2 或 3 個結果中的一個。您可以從所選結果的「types」欄位值,判斷該位置是否為機場。如需完整的類型清單,請參閱這篇文章

  "types" : [ "airport", "point_of_interest", "establishment" ],

不過,任何曾經造訪大型機場的人都知道,如果您不小心抵達錯誤地點,在航站之間轉乘需要花費大量時間。在這種情況下,由於搜尋結果的類型是「機場」,因此自動追蹤查詢很有用,可使用倫敦希斯洛機場的位置 (51.47016927594547, -0.45432767852489075) 搜尋「航站」。在這個範例中,您也可以看到可選的搜尋半徑限制為 3000 公尺。

  https://maps.googleapis.com/maps/api/place/textsearch/json?query=terminal&location=51.47016927594547%2C-0.45432767852489075&region=gb&key=YOUR_KEY&radius=3000

上述查詢會列出車站清單,以及這些車站的個別下車點。在結果清單中,我們可以找到「倫敦希斯洛機場第 5 航廈」及其地點 ID:

 "place_id" : "ChIJtQRd6XVxdkgRTUGZtcsoGNc",

我們可以使用「place_id」參數,告訴 Directions API 我們要前往某個地點,而非某個任意座標。

  https://maps.googleapis.com/maps/api/directions/json?origin=51.557263604707224,-0.2794575145680608&destination=place_id:ChIJtQRd6XVxdkgRTUGZtcsoGNc&key=YOUR_KEY

同樣地,如同前一個範例,只要讀取 JSON 回應中的所有步驟,就能找到行程的最後部分,以及終點位置的經緯度座標 (51.47079979999999,-0.4896765)。

希斯洛機場 5 號航廈

範例 2 的摘要

如同前述範例,開發人員只需付出很少的努力,就能為駕駛人提供更完善的導航服務,而且駕駛人節省的時間也相當容易評估。我們提出了以下要求:

  • 尋找希斯洛機場的 Places API 要求
  • Places API 要求,用於尋找靠近希斯洛機場座標的所有航廈
  • 取得前往 5 號航站的路線的 Directions API 要求

結語

如您所見,為搭乘汽車的客戶提供優質服務所需的開發工作量相當少,而且您可以輕鬆展現您如何考量客戶的需求。

在開發方面,您可以使用許多可用的程式庫和工具,協助您為客戶建構服務。請參閱我們公開提供的 Google 地圖平台 GitHub 存放區

後續行動

主要作者

Mikko Toivanen | Google 地圖平台解決方案工程師