通常、ユーザーがスポット(POI)まで車を運転しているときには、駐車場やアクセス ポイントなど、近隣の場所へのナビゲーションが必要になります。空港やショッピング モールに行く必要がある運転手を想像してください。空港に向かう運転手は、空港施設の中心ではなく、ターミナルや降車場所に到着しようとします。同様に、車を利用しているユーザーには、ショッピング センターに隣接する駐車場の方がはるかに適切な選択肢となる可能性があります。この場合、ドライバーを案内するアプリやサービスを開発する場合、まず目的地を特定し、その地点に近い任意の目的地をドライバーに提供します。このアプローチにより、Google Maps Platform によって提供される位置情報データを活用した、小規模ながらスマートな開発作業で、お客様により良いサービスを提供し、お客様の時間を大切にしていることを示せるようになります。
Places API と Directions API を順番または組み合わせて使用し、目的地に隣接する駐車に適した場所を特定する方法を紹介します。このソリューションは、最終目的地に近づいたら、不確実性と複数のインタラクションを排除して、駐車する場所を見つけることを目的としています。これらのケースの実装方法の例を 2 つ詳しく見てみましょう。
例 1 - 駐車場のない観光名所
ここでは、ルートを個別に取得する必要があるため、道路に直接つながっていない場所を選択します。目的地はパリのノートルダムです。出発点として、Gare de l’Est 駅(48.87697775149635, 2.3592247604675)を使用します。
運転手はノートルダムの北約 16 分で駅を出発します。ノートルダムは島にある有名な観光名所で、橋と片道の道があり、近くに大きな駐車場がないため、これは興味深いチャレンジになるはずです。
Places API リクエスト
この Places API リクエストの例では、「テキスト検索」を使用してノートルダムを検索します。詳しくは、デベロッパー向けドキュメントをご覧ください。この例の「YOUR_KEY」は、Google Cloud コンソールで有効にした Google Maps Platform Places API と Directions API 用に持っている API キーです。詳しくは、Google Maps Platform スタートガイドをご覧ください。
https://maps.googleapis.com/maps/api/place/textsearch/json?query=notre_dame&location=48.864716%2C2.349014®ion=fr&key=YOUR_KEY
上記のリクエストのレスポンスでは、次の緯度と経度の座標が返されます。
"results" : [ { "formatted_address" : "Notre Dame, Paris", "geometry" : { "location" : { "lat" : 48.8527288, }, ...
ご覧のとおり、座標は実際にノートルダムをピンポイントとしています。
|
|
デベロッパーやサービス プロバイダは、運転手に「ノートルダム付近の駐車場を探しています」というプロンプトを自動的に表示するとよいでしょう。ユーザー エクスペリエンスはデバイスや画面によって異なりますが、このケースでは、わずかなポップアップ テキストがしばらくすると消えることを検討する価値があります。ノートルダム周辺の駐車場を見つけるには、タイプ「parking」、半径「300」のパラメータを設定して、Places API でテキスト検索を行います。この例では、ノートルダムから 300 m 以内の駐車場を優先して結果を返します。
https://maps.googleapis.com/maps/api/place/textsearch/json?query=parking
&location=48.8527288%2C2.3505635®ion=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
Direction API のレスポンスには通常、複数のルート候補が含まれます。各ルートは複数の「区間」で構成され、移動距離と座標を示す複数の「ステップ」が含まれます。車で到達可能な最終座標を確認するには、選択したルートの最終区間の最終ステップの「end_location」フィールドを使用します。
この場所が第一候補のようですが、地図や Google ストリートビューを見ると、ノートルダムから約 6 ~ 7 分、歩いてすぐです。
駐車場からノートルダムへの徒歩ルート
例 1 のまとめ
このように、わずかな API 呼び出しと提案をドライバーに表示するだけで、車の駐車スペースを見つけることができます。これにより、ユーザーは一方通行で車を運転したり、混雑した観光地で車を置いておく場所を探したりすることがないため、時間を節約できます。おおまかに実行した API リクエストは次のとおりです。
- ノートルダムの座標を確認する Places API リクエスト
- 座標から 300 m 以内の駐車場を検索する Places API リクエスト
- 駐車場までのルートを検索する Directions API リクエスト
例 2 - 大規模な空港のターミナルへの案内
"types" : [ "airport", "point_of_interest", "establishment" ],
しかし、大きな空港を訪れたことがある人なら誰でも、ターミナル間の移動に膨大な時間がかかることを知っています。この場合、検索結果のタイプが「空港」であるため、ロンドン ヒースロー空港の所在地(51.47016927594547, -0.45432767852489075)を使用して「ターミナル」を検索するクエリを自動的に追跡すると便利です。この例には、検索半径が 3,000 メートルに制限されているというオプションもあります。
https://maps.googleapis.com/maps/api/place/textsearch/json?query=terminal&location=51.47016927594547%2C-0.45432767852489075®ion=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)を見つけることができます。
例 2 のまとめ
前の例と同様に、改善されたガイダンスをドライバーに提供するための開発の労力は非常に少なく、ドライバーが節約する時間のメリットを簡単に測定できます。以下のリクエストを行いました。
- ヒースロー空港を検索する Places API リクエスト
- ヒースロー空港の座標に近いすべてのターミナルを検索する Places API リクエスト
- ターミナル 5 へのルートを取得するための Directions API リクエスト。
おわりに
ご覧のとおり、車で旅行するお客様にプレミアム サービスを提供するために必要な開発作業はかなり少なく、顧客のニーズについてどのように考えているかを簡単に示すことができます。
開発目的では、ユーザー向けのサービスの構築に役立つさまざまなライブラリやツールを使用できます。一般公開されている Google Maps Platform の GitHub リポジトリをご覧ください。
次のアクション
主任著者
Mikko Toivanen | Google Maps Platform ソリューション エンジニア