2024/03/24

つないでみよう:#9)Google マップ - Place API の仕様

前回は Place API の利用に必要な準備を行い、API キーを取得しました。今回はこのキーを利用して API を実際にコールしてみます。


API のドキュメント

まずは、API の仕様について確認します。Place API の Documentation のリンクをクリックします。

すると『Google Maps Platform のドキュメント』ページが開きます。Places-Places API と SDK の[API]をクリックすると Place API のドキュメントが確認できます。


検索の種類

ドキュメントによると Place API では次の 3 種類の検索方法が提供されています。

Find Place 名称や住所、電話番号などのテキスト情報から検索
Nearby Search 指定した位置の周辺を検索
Text Search キーワードによるあいまいな検索

今回は一番わかりやすい Nearby Search を検証します。


なお、ドキュメントを見て発見したのですが、Place API の新バージョンがリリースされていました。今回の記事は、検証済みの旧来の Place API を使用します。新バージョンについては機会があればまとめたいと思います。



リクエスト方法

結果を JSON 形式で取得する場合の URL は次の通りです。

https://maps.googleapis.com/maps/api/place/nearbysearch/json?parameters

? 以降には、検索条件を指定します(後述)。使用する HTTP のメソッドは GET で、検索条件をすべて URL に記述するパターンとなります。


パラメータ

Nearby Search で利用できるパラメータをまとめます。必要なものを抜粋すると次の通りです(○ は必須)。

key ○ API キー
location ○ 検索地点の座標(latitude,longitude)
radius ○ 検索範囲(メートルで指定)
keyword 検索キーワード
language ja を指定すると日本語で返す
rankby 近い順に取得したい場合 distance を指定
この場合 radius は指定できない
type レストランやカフェなどの プレイスタイプ


API のテスト

リクエスト方法がわかったので API をテストしてみます。今回は Postman というツールを使用して検証してみました。


HTTP のメソッドと URL を入力し、パラメータをセットしました。御堂筋線の本町駅から 1000m の範囲にある ”鳥貴族” を検索しています。

[送信]ボタンをクリックするとリクエストを API に送信します。この時の URL は次のようになります(改行して整形済み)。

https://maps.googleapis.com/maps/api/place/nearbysearch/json?
                key=xxxxxxxxxxxxxxxxxxxxxxxxxxxx&
                location=34.683742526906634,135.49698067096077&
                radius=1000&
                keyword=鳥貴族&
                language=ja

実行結果は次のようになります。

検索結果は results オブジェクト内に配列で列挙されています。その要素1つが1件の場所を表します。重要項目には注釈をつけていますが、座標や名称、プレースタイプが含まれています。なお、プレース ID は Google Place データベースで一意に表す ID です。

ちなみに、実行結果には計 7 件記録されており、その順は次の通りでした。1番近い店舗が 4 番目になっていました。

近い順に並べる場合には、rankby=distance をパラメータに追加します。前述した通り rankby は radius と同時に指定できません。間違って指定すると次のようなエラーが返ります。

{
    "html_attributions": [],
    "results": [],
    "status": "INVALID_REQUEST"
}


next_page_token

rankby=distance をパラメータを指定したり、検索範囲を大きくすると多くの地点情報が返されます。Place API では 1 回のレスポンスで最大 20 件までに制限されています。それ以降の結果がある場合 next_page_token がレスポンスに含まれます。

このトークンを pagetoken パラメータとして送信すると続きの 20 件が取得できます。なお、この時に指定するパラメータは key と pagetoken だけでかまいません。

続きの 20 件にまだ続きがある場合、また next_page_token がレスポンスに含まれます。これを繰り返すことにより、大量の検索結果を得る仕組みになっています。


前回 連載:つないでみよう 次回


0 件のコメント:

コメントを投稿