車で目的地に移動する際のユーザー エクスペリエンスを最大限に高めるためのヒント

このドキュメントは、以前のバージョンの GMP API を使用した古い記事を更新したものです。このコンテンツは、2023 ~ 2024 年にリリースされた新しいバージョンの Places API と、2023 年にリリースされた Routes API に合わせて更新されています。

通常、ユーザーがスポット(POI)に車で向かう場合、実際には駐車場やアクセス ポイントなどの近くの場所へのナビゲーションが必要になります。空港やショッピング モールに行く必要があるドライバーを想像してください。空港に向かう場合、ドライバーは空港の敷地の中心ではなく、ターミナルまたは降車地点に到着しようとしています。同様に、ショッピング センターの隣にある駐車場は、車で訪れるユーザーにとってはるかに良い選択肢となる可能性があります。この場合、ドライバーを案内するアプリやサービスを開発する際は、まずドライバーの目的地を特定し、その場所の近くにあるオプションの目的地をドライバーに提案します。このアプローチでは、Google Maps Platform が提供する位置情報を活用した小規模ながらもスマートな開発により、お客様に優れたサービスを提供し、お客様の時間を大切にしていることを示すことができます。

システム図

新しい Places APIRoutes API を順番に、または組み合わせて使用して、目的地近くの適切な駐車場所を特定する方法について説明します。このソリューションは、目的地に近づいたときに駐車場所を探す際の不確実性や複数の操作を解消することを目的としています。これらのケースを実装する方法の 2 つの例を詳しく見てみましょう。

例 1 - 駐車場のない観光名所

ルートを別途取得する必要があるように、道路に直接接続されていない場所を選択します。目的地はパリの ノートルダム大聖堂出発地パリ東駅(48.87697775149635, 2.3592247806755564)を使用します。

Gare l'Est

運転手はノートルダムの北約 16 分の駅を出発します。ノートルダムは、橋でアクセスできる島にある有名な観光名所です。一方通行の道路がいくつかあり、近くに大きな駐車場はありません。これは興味深い課題になるでしょう。

1. Places API リクエスト

この Places API リクエストの例では、テキスト検索を使用してノートルダムを検索しています。詳しくは、デベロッパー向けドキュメントをご覧ください。これらの例の「$APIKEY」は、Google Cloud コンソールで有効になっている Google Maps Platform の Places API と Routes API の API キーです。詳しくは、Google Maps Platform スタートガイドをご覧ください。

新しい Places API リクエストの形式が新しくなりました。レスポンス フィールドは固定されなくなったため、デベロッパーはヘッダーで fieldmask を定義する必要があります。fieldmask の使用はドキュメントで定義されています

curl -X POST --data @notre_dame.json \
-H 'Content-Type: application/json' -H "X-Goog-Api-Key: $APIKEY" \
-H 'X-Goog-FieldMask: places.id,places.displayName,places.formattedAddress,places.location' \
'https://places.googleapis.com/v1/places:searchText'

検索パラメータの「notre_date.json」の内容:

{
   "textQuery": "Notre Dame, Paris",
   "languageCode": "en"
}

上記のリクエストに対するレスポンスは、次の緯度と経度の座標を返します。

{
  "places": [
    {
      "id": "ChIJATr1n-Fx5kcRjQb6q6cdQDY",
      "formattedAddress": "6 Parvis Notre-Dame - Pl. Jean-Paul II, 75004 Paris, France",
      "location": {
        "latitude": 48.852968200000007,
        "longitude": 2.3499021
      },
      "displayName": {
        "text": "Cathédrale Notre-Dame de Paris",
        "languageCode": "en"
      }
    }
  ]
}

ご覧のとおり、座標はノートルダム大聖堂を正確に示しています。

ノートルダムの入り口の写真 ノートルダム周辺の地図

デベロッパーやサービス プロバイダは、ドライバーに「ノートルダム大聖堂近くの駐車場をお探しですか?」と自動的に尋ねることをおすすめします。また、ドライバーが電気自動車を所有している場合は、充電ステーションを検索することもできます。デバイスや画面によってユーザー エクスペリエンスは異なりますが、この場合は、短時間で消える控えめなダイアログ テキストを検討する価値があるかもしれません。ノートルダム大聖堂の近くにある駐車場を探すには、半径 500 メートル以内の「駐車場」と「電気自動車の充電ステーション」をタイプとして Places API の付近検索を行います。次の例では、ノートルダムから 500 メートル以内の駐車場に結果が偏ります。

curl -X POST -d '{
  "includedTypes": ["parking", "electric_vehicle_charging_station"],
  "maxResultCount": 10,
  "rankPreference": "DISTANCE",
  "locationRestriction": {
    "circle": {
      "center": {
        "latitude": 48.852968200000007,
        "longitude": 2.3499021},
      "radius": 500.0
    }
  }
}' \
-H 'Content-Type: application/json' -H "X-Goog-Api-Key: $APIKEY" \
-H "X-Goog-FieldMask: places.displayName,places.location" \
https://places.googleapis.com/v1/places:searchNearby

最初の結果は 48.854981, 2.350629 の充電ステーションですが、この例を実行する時点では結果が異なる場合があります。この場所は、次のパートで Routes API リクエストを行う際に使用します。

2. Routes API リクエスト

駅からノートルダム大聖堂近くの充電ステーションまでのルートを検索するには、Routes API リクエストを行う必要があります。出発地と目的地のパラメータを設定するだけです。その他のオプションについては、デベロッパー ドキュメントをご覧ください。

curl -X POST -d '{
  "origin":{
    "location":{
      "latLng":{
        "latitude": 48.87697775149635,
        "longitude": 2.3592247806755564
      }
    }
  },
  "destination":{
    "location":{
      "latLng":{
       "latitude": 48.854981,
        "longitude": 2.350629
      }
    }
  },
  "travelMode": "DRIVE",
  "routingPreference": "TRAFFIC_AWARE",
  "departureTime": "2024-05-16T15:01:23.045123456Z",
  "computeAlternativeRoutes": false,
  "routeModifiers": {
    "avoidTolls": false,
    "avoidHighways": false,
    "avoidFerries": false
  },
  "languageCode": "en-US",
  "units": "METRIC"
}' \
-H 'Content-Type: application/json' -H "X-Goog-Api-Key: $APIKEY" \
-H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.legs,routes.polyline.encodedPolyline' \
'https://routes.googleapis.com/directions/v2:computeRoutes'

Routes API レスポンスには通常、複数のルート候補が含まれます。レスポンスにルートデータを含めるには、フィールド マスクで「routes.legs」を定義します。各ルートは複数の「レッグ」で構成され、それらには移動距離と座標を示す複数の「ステップ」が含まれています。車で到達可能な最終座標を確認するには、選択したルートの最後の区間の最後のステップの endLocation フィールドを使用します。"latitude": 48.854937299999996, "longitude": 2.3505841999999997

この場所は第一候補ではないように思われるかもしれませんが、地図や Google ストリートビューを見ると、ノートルダムから徒歩 6 ~ 7 分の距離にあることがわかります。

ノートルダムまでのルート

充電ステーションの駐車スペースからノートルダムまでの徒歩ルート

例 1 の概要

ご覧のとおり、車の駐車エリアを見つけるには、数回の API 呼び出しと、ドライバーへの提案の表示のみが必要です。これにより、ユーザーは一方通行の道路を走り回ったり、混雑した観光地で車を停める場所を探したりする必要がなくなるため、時間を節約できます。概要として、次の API リクエストを行いました。

  • ノートルダムの座標を検索する Places API テキスト検索リクエスト
  • Places API の周辺検索で、座標から 500 メートル以内の電気自動車充電スタンドがある駐車場を検索する
  • 充電スタンドまでのルートを検索する Routes API リクエスト

例 2 - 大規模な空港のターミナルへの案内

ヒースロー空港の地図

たとえば、ドライバーが複数の場所、POI、降車地点がある広いエリアに到着しようとしている場合を考えてみましょう。運転手は英国のウェンブリー スタジアム(51.557263604707224, -0.2794575145680608)から出発し、ロンドン ヒースロー空港ターミナル 5 に向かおうとしています。

新しい Places API の Autocomplete の優れた点は、API が検索結果の候補としてサブプレミスを予測するのと組み合わせて、プライマリ タイプを検索条件として定義できることです。この場合、空港と駐車場を検索すると、ターミナルや駐車場も返されることを意味します。含めるまたは除外するタイプの完全なリストについては、ドキュメントをご覧ください。

curl -X POST -d '{
  "input": "Heathrow",
  "includedPrimaryTypes": ["airport", "parking"]
}' \
-H 'Content-Type: application/json' -H "X-Goog-Api-Key: $APIKEY" \
https://places.googleapis.com/v1/places:autocomplete

上記のクエリでは、ターミナルと、そのターミナルにある個々の降車ポイントのリストが返されます。結果のリストから、「London Heathrow Airport Terminal 5」とそのプレイス ID を見つけることができます。

"place_id" : "ChIJo21hnPxxdkgRksRL0KQRWII",

「placeId」パラメータを使用すると、任意の座標ではなく、場所への到達を試みていることを Routes API に伝えることができます。

curl -X POST -d '{
  "origin":{
    "location":{
      "latLng":{
        "latitude": 51.557263604707224,
        "longitude": -0.2794575145680608
      }
    }
  },
  "destination":{
    "placeId": "ChIJo21hnPxxdkgRksRL0KQRWII"
  },
  "travelMode": "DRIVE",
  "routingPreference": "TRAFFIC_AWARE",
  "departureTime": "2024-05-16T15:01:23.045123456Z",
  "computeAlternativeRoutes": false,
  "languageCode": "en-US",
  "units": "METRIC"
}' \
-H 'Content-Type: application/json' -H "X-Goog-Api-Key: $APIKEY" \
-H 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.legs,routes.polyline.encodedPolyline' \
'https://routes.googleapis.com/directions/v2:computeRoutes'

前の例と同様に、JSON レスポンスのすべてのステップを読み取ると、旅の最後の部分と、最終目的地の緯度と経度の座標(51.4714348、-0.48967890000000003)がわかります。

第 5 ターミナルのストリートビュー

例 2 の概要

前の例と同様に、ドライバに改善されたガイダンスを提供するための開発作業は非常に少なく、ドライバの時間を節約できるというメリットを測定できます。次のリクエストを行いました。

  • ヒースロー空港の第 5 ターミナルを検索する Places API オートコンプリート(新版)リクエスト
  • ウェンブリーからターミナル 5 までのルートを取得する Routes API リクエスト

この例は、新しい Places API の機能のほんの一部にすぎません。滑走路や国際空港など、新しい場所の種類をご覧ください。

まとめ

このように、車で旅行するお客様にプレミアム サービスを提供するために必要な開発作業はそれほど多くなく、お客様のニーズを考慮していることを示すことができます。

開発目的で、顧客向けのサービスの構築に役立つ多くのライブラリとツールを使用できます。一般公開されている Google Maps Platform の GitHub リポジトリをご覧ください。

次のアクション

GMP のスタートガイド : https://developers.google.com/maps/get-started

おすすめの関連資料

Places API のオートコンプリート(新機能)のドキュメント: https://developers.google.com/maps/documentation/places/web-service/place-autocomplete

Routes API のドキュメント: https://developers.google.com/maps/documentation/routes

寄稿者

主な著者: Mikko Toivanen | Google Maps Platform ソリューション エンジニア