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 件のコメント:

コメントを投稿