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

一般而言,當使用者開車前往搜尋點 (POI) 時,他們實際上需要前往附近地點 (例如停車場或存取點) 才能瀏覽。請想像駕駛必須前往機場或購物中心。前往機場時,司機嘗試抵達航廈或下車地點,而不是機場複合物中心。同樣地,如果使用者有車,購物中心旁的停車場可能會是更好的選擇。在這種情況下,如要開發用於引導駕駛的應用程式或服務,請先找出他們前往的地點,再為司機所在位置附近的目的地提供目的地。如此一來,您就能輕鬆運用 Google 地圖平台提供的位置資料,為客戶提供更優質的服務,並證明您重視他們的時間寶貴。

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

我們會說明如何依序或組合使用 Places API 和 Directions API,找出適合放置您目的地附近的公園位置。這項解決方案旨在消除不確定度和多次互動,以便找到停車地點,並在接近終點時行駛。讓我們來看看以下兩個範例,進一步瞭解如何實作這些案例。

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

選擇未直接連結到道路的地點,以便單獨擷取路線;「目的地」為巴黎的「Notre Dame」,並以「Gare de l’Est」火車站做為起點,然後使用 Gare de l’Est 車站 (48.87697775149635, 2.359224780675)。

東南亞

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

Places API 要求

此 Places API 要求範例是使用「text search」來尋找 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 相片
地圖上的巴黎聖母院

開發人員或服務供應商不妨自動提示駕駛人「想在巴黎聖母院附近停車嗎?」。使用者體驗會因裝置和螢幕而異,但在這種情況下,不妨考慮使用短時間後就會消失的輕量彈出式文字。如要尋找巴黎聖母院附近的停車位,請使用 Places API 文字搜尋,並設定類型為「parking」,半徑為「300」的參數。此範例會將結果調整至聖母院 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 要求

如要尋找從車站到靠近聖母院 (Notre Dame) 附近停車場的路線,您必須執行 Directions API 要求。只要設定起點和目的地參數即可。如需其他選項,請參閱開發人員說明文件

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

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

這個地點似乎不是第一個選擇,但在查看地圖或「Google 街景服務」時,可發現該處的步行距離不到 6 到 7 分鐘,距離聖母院約 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 地圖平台解決方案工程師